Announcement

Collapse
No announcement yet.

Cross-Compiling mit CMAKE

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Cross-Compiling mit CMAKE

    Hi,

    ich habe schon ein bisschen danach gegoogelt, komme aber auch da nicht weiter.

    Ich habe eine ssh-Bibliothek heruntergeladen, die ich für die Verwendung in meinem Code brauche. Da dieser Code auf einer embedded Platform unter einer anderen Unix-Variante laufen soll, müsste diese Bibliothek mit einem Cross-Compile übersetzt werden.

    Die Makefiles sollen laut README der Bibliothek mit CMake erstellt werden, also habe ich mich im Internet ein bisschen schlau gemacht, wie ich das anzugeben habe und bin zu folgendem Toolchain-File gelangt:
    Code:
    SET(CMAKE_SYSTEM_NAME Linux)
    SET(CMAKE_INSTALL_PREFIX /home/martin/Syscon3/system/src/libssh/build/install)
    SET(CMAKE_BUILD_TYPE Debug)
    SET(CMAKE_C_COMPILER /usr/local/ELDK-4.2/usr/bin/ppc_85xxDP-gcc)
    SET(CMAKE_CXX_COMPILER /usr/local/ELDK-4.2/usr/bin/ppc_85xxDP-g++)
    SET(CMAKE_FIND_ROOT_PATH /usr/local/ELDK-4.2/ppc_85xxDP/usr/lib)
    SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    bei einem cmake -DCMAKE_TOOLCHAIN_FILE=./Toolchain-Syscon.cmake .. führt cmake aber Bibliotheken /usr/lib/libz.o, /usr/lib/libssl.so und /usr/lib/libcrypto.so auf, obwohl entsprechende Bibliotheken für die Target-Platform in /usr/local/ELDK-4.2/ppc_85xxDP/usr/lib vorhanden sind, und wenn ich trotz diesr Ausgabe hinterher ein make aufrufe, scheitert das Linken weil libssl.so behauptet weitere Dateien zu brauchen (z.B. libdl.so.2), die aber alle im CMAKE_FIND_ROOT_PATH vorhanden sind. Auch hier führt make zunächst auf, dass die Bibliotheken /usr/lib/libz.so gefunden wurden, er scheint aber zumindest die richtige zu benutzen, da die Fehlermeldungen beim Linken /usr/local/ELDK-4.2/usr/../ppc_85xxDP/usr/lib/libssl.so: undefined reference to ... heißt.

    Irgendwie scheint also CMake die Verwendung dieses Bibliotheksverzeichnis nicht korrekt umzusetzen, ich habe aber keine Ahnung was ich dann wo einsetzen muss, und von meinen Kollegen scheint sich auch niemand mit CMake auszukennen, deshalb wolte ichmal hier fragen, wie ich die Bibliothek nun so übersetzen kann, dass ich sie auf meiner embedded platform nutzen kann.

    Hoffe jemand kann helfen
    Martin Dietz

  • #2
    KLeines Update:

    Es scheint nicht am CMAKE zu liegen, ich habe jetzt auch mal die libssh2-Bibliothek heruntergeladen, die mit configure und Automake arbeitet, auch hier bekomme ich beim Übersetzen der Bibliothek die Bemerkungen vom Linker, er würde die von der libssl.so benötigten Bibliotheken libgssapi_krb5.so.2, libkrb5.so.3, libcom_err.so.2 usw. nicht finden, selbst wenn ich den Pfad zu den Dateien als LDFLAGS explizit übergebe (mit libcrypto.so.6 und libc.so.6 scheint er aber keine Probleme zu haben). Vielleicht weiß ja doch noch jemand, was man da tun kann (oder welche Informationen ich noch mit angeben muss, damit man mir helfen kann)

    Vielen Dank
    Martin
    Zuletzt editiert von M.Dietz; 06.05.2011, 10:51.

    Comment

    Working...
    X