Már több mint 'n' órát töltöttem el az alábbi problémával, és gondoltam hátha valaki ránézésre megmondja mi a hiba:
Ez tökéletesen lefut:
ld {flags} -o {outfile} {f1.o} {f2.o} ... {fn.o} {libxx.a}
vagy konkrét példával:
gcc -m64 -Xlinker -O1 -ldl -lpthread -o ../generated/adfiles/adlc
../generated/adfiles/adlparse.o ../generated/adfiles/archDesc.o ../generated/adfiles/arena.o
../generated/adfiles/dfa.o ../generated/adfiles/dict2.o ../generated/adfiles/filebuff.o
../generated/adfiles/forms.o ../generated/adfiles/formsopt.o ../generated/adfiles/formssel.o
../generated/adfiles/main.o ../generated/adfiles/adlc-opcodes.o ../generated/adfiles/output_c.o
../generated/adfiles/output_h.o
/home/axt/clang+llvm-3.1-x86_64-linux-ubuntu_12.04/lib/clang/3.1/lib/linux/libclang_rt.asan-x86_64.a
De én csak a -o "../generated/adfiles/adlc" előtti részt tudom szerkeszteni, ezért gondoltam átírom a következő alakra:
ld {flags} -L{path to libxx.a} -lxx -o {outfile} {f1.o} {f2.o} ... {fn.o}
gcc -m64 -Xlinker -O1 -ldl -lpthread -L /home/axt/clang+llvm-3.1-x86_64-linux-ubuntu_12.04/lib/clang/3.1/lib/linux/
-lclang_rt.asan-x86_64 -o ../generated/adfiles/adlc
../generated/adfiles/adlparse.o ../generated/adfiles/archDesc.o ../generated/adfiles/arena.o ../generated/adfiles/dfa.o ../generated/adfiles/dict2.o ../generated/adfiles/filebuff.o
../generated/adfiles/forms.o ../generated/adfiles/formsopt.o ../generated/adfiles/formssel.o
../generated/adfiles/main.o ../generated/adfiles/adlc-opcodes.o ../generated/adfiles/output_c.o
../generated/adfiles/output_h.
Ez meg halom "undefined reference to"-t dob azokra a függvénynevekre amik libxx-ben vannak.
Sajnos .so-fordítani a .a-ból nem járható út.
Minden ötletet előre köszönök.
- 4089 megtekintés
Hozzászólások
Nevezetesen: "If any library A depends on symbols defined in library B, then library A should appear first in the list supplied to the linker"
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Köszi! Igazatok lesz, ha a ".a" filet átmozgatom a ".o"-k elé az első példában, akkor hibás lesz, cserébe ha a második példában a -l{xx} -L{pathtoxx} -et a ".o"-k után adom meg, akkor viszont megjavul.
A dolog tehát tényleg csak a sorrend függvénye.
Már csak bele kell hackelnem valahogy a makefileba.
- A hozzászóláshoz be kell jelentkezni