Cum pot specifica parametrii linker pentru a fi utilizați în biblioteca partajată [cmake]

Am rulat o construcție folosind cmake folosind Meego 1.2 toolchain (poveste lungă). Acest set de unelte special necesită opțiunea - sysroot pentru a găsi orice biblioteci pe care le cere.

set (CMAKE_CXX_FLAGS "-fpermissive")
set (CMAKE_CXX_LINK_FLAGS "--sysroot=${INTEL_GRAPHICS_SDK_BASE}/sdk")
set (CMAKE_CXX_FLAGS_DEBUG "-g")

Aceste opțiuni permit scanarea inițială a compilatorului cmake să treacă, dar când se produce o bibliotecă partajată în timpul construcției, se pare că ld este apelat fără niciuna dintre opțiunile specificate.

Există o altă variabilă cmake care trebuie setată pentru a specifica sysroot pentru bibliotecile partajate?

Eroarea pe care o primesc e

/usr/lib/madde/linux-i686/toolchains/meego-1.2-sdk-ia32-toolchain-1.0-linux_i686/i586-meego-linux-gnu/bin/../lib/gcc/i586-meego-linux-gnu/4.5.1/../../../../i586-meego-linux-gnu/bin/ld: crti.o: No such file: No such file or directory
collect2: ld returned 1 exit status
2
Poate că aveți nevoie de link_directories ($ {PATH_TO_crti.o}) ?
adăugat autor arrowd, sursa
este compilația încrucișată? de fapt - sysroot este flagul g ++. de asemenea, ați putea încerca să utilizați opțiunea -Wl g ++.
adăugat autor Sergei Nikulov, sursa

1 răspunsuri

Din moment ce utilizați lanțul de instrumente pentru compilatoare încrucișate, de ce să nu setați doar CMAKE_CXX_COMPILER și să transmiteți aceste opțiuni - sysroot = direct la g ++ (sau gcc)?

Există, de asemenea, un semn denumit CMAKE_EXE_LINKER_FLAGS cu explicația de mai jos:

CMAKE_EXE_LINKER_FLAGS

   Linker flags used to create executables.

   Flags used by the linker when creating an executable.
1
adăugat