$ mkdir 1;cd 1 $ cat >plus.c int plus(int i0, int i1) { return i0 + i1; } $ cat >plus.h int plus(int i0, int i1); $ cat >main.c #include "plus.h" int main(void) { return plus(1,2); } $ cat >Makefile main: main.o libplus.so plus.h gcc -g -L. -o main main.o -lplus rm main.o plus.o main.o: main.c gcc -c -g -o main.o main.c libplus.so: plus.o gcc -g -shared -o libplus.so plus.o plus.o: plus.c gcc -c -g -fPIC -o plus.o plus.c .PHONY: clean clean: rm main libplus.so main.o plus.o $ ls Makefile main.c plus.c plus.h $ make gcc -c -g -o main.o main.c gcc -c -g -fPIC -o plus.o plus.c gcc -g -shared -o libplus.so plus.o gcc -g -L. -o main main.o -lplus rm main.o plus.o $ file libplus.so libplus.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped $ file main main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped $ LD_LIBRARY_PATH=. $ ldd main | grep plus libplus.so => ./libplus.so (0x00007f8018644000) $ ./main $ echo $? 3 $
时间: 2024-10-21 13:33:58