Wie lösen Mehrere definition-Fehler in gcc linux?
Ich bin mit unter Fehler, wenn Sie versuchen zu statisch link libDuma, Können Sie mir sagen, wie zu Fragen, g++ verwenden Sie malloc aus libDuma?
sunny@sunny-laptop:~/CodeTest$ g++ ./testDuma.cpp -g -o testDuma -static -lduma -pthread
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/libc.a(malloc.o): In function `free':
(.text+0x4b00): multiple definition of `free'
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/libduma.a(duma.o):(.text+0x25f0): first defined here
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/libc.a(malloc.o): In function `malloc':
(.text+0x4bc0): multiple definition of `malloc'
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/libduma.a(duma.o):(.text+0x2730): first defined here
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/libc.a(malloc.o): In function `realloc':
(.text+0x5950): multiple definition of `realloc'
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/libduma.a(duma.o):(.text+0x23d0): first defined here
collect2: ld returned 1 exit status
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht zwingen, einen völlig statischen link (nicht die
-static
flag) -- tun, damit auf jedem modernen UNIX-system ist eine extrem schlechte Idee(TM).Stattdessen link nur libduma statisch. Entweder auszuführen, sollten diese Befehle funktionieren:
Hinzufügen
-nodefaultlibs
flag nicht link auf libc. Oder, entfernen Sie-lduma
- und link-dynamisch nach der Kompilierung mit:-z muldefs
linker Flagge. Wie:g++ testDuma.cpp -static -g -o testDuma -lduma -lpthread -Xlinker -z -Xlinker muldefs