GNU ld,
GCC, , , .
,
, .
""
.
.
, ,
, , .
, . ,
, .
, :
"some_func in library\n"
"some_func in somelib.o"
, , :
1
troublingsource.o somelib.o .
: main.o, troublingsource.o, libsomelib.a
gcc -I. -c -o troublingsource.o troublingsource.c
gcc -I. -c -o somelib.o somelib.c
gcc -I. -c -o main.o main.c
ar rcs libsomelib.a somelib.o
gcc -o test main.o troublingsource.o -L. -lsomelib
./test
Troubling func
:
main.o .main main.osome_func , main.otroublingsource.osome_func, , , troublingsource.o.- .
libsomelib.a .
2
someblib.o troublingsource.o .
: main.o, somelib.o, libtroublingsource.a
gcc -I. -c -o somelib.o somelib.c
gcc -I. -c -o troublingsource.o troublingsource.c
gcc -I. -c -o main.o main.c
ar rcs libtroublingsource.a troublingsource.o
gcc -o test main.o somelib.o -L. -ltroublingsource
./test
some_func in somelib.o
:
main.o .main main.osome_func , main.osomeblib.osome_func, , , somelib.o.- .
libtroublingsource.a .
3
someblib.o troublingsource.o .
: main.o, libsomelib.a, libtroublingsource.a
gcc -I. -c -o somelib.o somelib.c
gcc -I. -c -o troublingsource.o troublingsource.c
gcc -I. -c -o main.o main.c
ar rcs libsomelib.a somelib.o
ar rcs libtroublingsource.a troublingsource.o
gcc -o test main.o -L. -lsomelib -ltroublingsource
./test
some_func in somelib.o
:
main.o .main main.osome_func , main.olibsomeblib.a , some_funcsome_func somelib.o of libsomelib.asomelib.o libsomelib.a .- .
libtroublingsource.a .
4
someblib.o troublingsource.o .
: main.o, somelib.o, troublingsource.o
gcc -I. -c -o somelib.o somelib.c
gcc -I. -c -o troublingsource.o troublingsource.c
gcc -I. -c -o main.o main.c
gcc -o test main.o somelib.o troublingsource.o
troublingsource.o: In function `some_func':
troublingsource.c:(.text+0x0): multiple definition of `some_func'
somelib.o:somelib.c:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
:
main.o .main main.osome_func , main.osomeblib.osome_func, , , somelib.otroublingsource.osome_func, somelib.o, troublingbsource.o. .
5
someblib.o .
: libsomelib.a main.o
gcc -I. -c -o somelib.o somelib.c
gcc -I. -c -o main.o main.c
ar rcs libsomelib.a somelib.o
gcc -o test -L. -lsomelib main.o
main.o: In function `main':
main.c:(.text+0xa): undefined reference to `some_func'
collect2: error: ld returned 1 exit status
:
libsomelib.a ,
. , undefined, libsomelib.a
,main.o .main main.osome_func , main.o- .
some_func
, undefined. .