Est une plate-forme de spécifique de fichier C de?
-
30-09-2019 - |
Question
Je suis en train d'utiliser une API pour un dispositif d'interface propriétaire sur un système embarqué (Freescale HCS08), et les fichiers fournis comprennent les en-têtes (.h) et bibliothèques (.lib). L'en-tête compile très bien avec le reste de mon code (C standard), mais en essayant de lier à la bibliothèque je reçois des erreurs de mémoire indiquant que le fichier peut être corrompu.
Ma compréhension des bibliothèques C est quelque peu limitée que je travaille presque exclusivement sur les systèmes embarqués où les choses magiques comme stdio, les fichiers et dll n'existent pas; mais serait la bibliothèque (ou tout autre) être spécifique de la plate-forme? Est-ce qu'il contient entièrement (s'il y a une sorte de niveau là-bas) de code compilé? Certains des autres fichiers fournis sont des fichiers de projet VS, donc s'il est vrai que la .lib est plate-forme spécifique, il ne serait pas surprenant que la liaison d'un fichier destiné à Windows x86 à un compilateur 8 bits échouerait; il pourrait être juste moi.
La solution
Non seulement est spécifique CPU fichier .lib (code, il n'y aurait aucun moyen de lien HCS08 au code x86), il est spécifique toolchain (CodeWarrior ne parlera pas à SDCC, GCC / binutils ne sera pas parler à Visual Studio ).
Autres conseils
Oui, le .lib contient le code compilé il est donc plate-forme spécifique. Si vous avez la source que vous devriez être en mesure de re-compiler sur votre plate-forme.