2016-03-24 7 views
0

Es gibt viele verschiedene Antworten, die um dieses Thema kreisen, aber ich denke, dass mein Problem ein bisschen spezifischer sein könnte, als keine Arbeit.Wie bekomme ich Eclipse CDT, um die richtigen Linux-Header zu verwenden und keine semantischen Fehler mehr zu werfen?

Ich benutze Eclipse (v3.8.1), um eine C-Anwendung für ein eingebettetes Ziel zu erstellen. Ich benutze LTIB, um das Zielbild zu erstellen, und ich konnte bestätigen, dass die GCC-Toolchain von LTIB (für einen Freescale i.MX-Prozessor) solide ist - ich kann erfolgreich eine "Hello World" -Anwendung für das Ziel erstellen und bereitstellen .

Jetzt versuche ich einige Linux-Header für das Ziel in Eclipse enthalten. Also, ich füge ein VAR zu ${LTIB_LOC} = /home/user/ltib in Eclipse und fügen Sie die Include-Datei Verzeichnisse überall scheinbar (mit Hilfe von anderen Antworten).

${LTIB_LOC}/rpm/BUILD/linux-2.6.31/include 

Und im Quellcode, füge ich die Header ich brauche:

#include <linux/types.h> 
#include <linux/imx_types.h> 

Nun das Problem ist zweifach. Zuerst wird der gemeinsame Header types.h von den integrierten Host-Verzeichnissen (/usr/include/linux) abgeholt, während ich diejenigen in den LTIB-Verzeichnissen verwenden möchte. Zweitens kann der benutzerdefinierte i.MX-Header imx_types.h von den Eclipse-Erkennungsscannern nicht gefunden werden. Daher habe ich persistente semantische Warnungen/Fehler, obwohl der Compiler die Header und die Projekt-Builds finden kann.

Wie kann ich die integrierten Host-Verzeichnisse loswerden, so dass ich immer die Ziel-Linux-Header verwende, und wie werde ich die unglaublich lästigen semantischen Fehler los?

+0

Mean Sie, dass Strg + Klick Sie zum lokalen Header anstelle der SDK One fährt? – LPs

+0

@LPs Ja, das stimmt. –

+0

Haben Sie die Projekteigenschaften 'C/C++ Build-> Environment' geändert? – LPs

Antwort

1

Sie müssen Ihren integrierten Compilereinstellungen-Provider konfigurieren, um die richtige Toolchain zu finden.

Gehen Sie zu Project Properties | C/C++ General | Providers. Wählen Sie [Your Toolchain] Built-in Compiler Settings, und ersetzen Sie in der Command to get compiler specs${COMMAND} durch den Pfad zu Ihrem Cross-Compiler.

Dies sollte CDT dazu bringen, die integrierten Includes der Standard-Toolchain des Systems nicht mehr aufzuheben und die integrierten Includes Ihrer Cross-Compiler Toolchain zu übernehmen.

(Ja, ${COMMAND} mit einem expliziten Pfad zu ersetzen Hacky ist. Der richtige Weg, dies zu tun, zumindest in den Köpfen der Entwickler, die dieses System ist die Cross-Compiler-Entwickler eine Eclipse-Plugin verteilen haben das definiert seinen eigenen[Cross Compiler Name] Built-in Compiler Settings Provider, der weiß, wo der Compiler ausführbar ist (dh für welche ${COMMAND} ist das richtige, um damit zu beginnen), und verwenden Sie das anstelle der Standard-integrierte Einstellungen Anbieter.Ich nehme an, dass Sie nicht solche haben ein Eclipse-Plugin handy.)

+0

Danke dafür - Ich habe das Problem vor einiger Zeit auf den Schrottplatz gebracht, aber ich werde sicher sein, dass ich die Informationen in Zukunft verwenden werde. –