我面臨的問題可能會稍微複雜一點,解釋和理解,因爲給整個圖片將是太大和困難。鏈接pthread庫問題
請原諒。
考慮下面的Makefile:
all: clients.so simulator backup
LD_PRELOAD=/home/Juggler/client/clients.so ./simulator
backup: backup.c libclient.a
gcc backup.c -o backup -L /home/Juggler/client -L. -lclient -ldl
simulator: simulator.c libclient.a
gcc -g simulator.c -o simulator -L /home/Juggler/client -L. -lclient -ldl -pthread
libclient.a: libclient.o client.o
ar rcs libclient.a libclient.o client.o
libclient.o:libclient.c
gcc -c libclient.c -o libclient.o -pthread
clients.so: client.o client_invoke.o
ld -shared -o clients.so client_invoke.o client.o -ldl
client_invoke.o: client_invoke.c
gcc -Wall -fPIC -DPIC -c -g client_invoke.c
client.o: client.c
gcc -Wall -fPIC -DPIC -c -g client.c -ldl -pthread
我們稱之爲功能從libclient.c寫在client.c和client.c發出呼叫這些函數pthread_key_create(),pthread_setspecific..etc。
線程由simulator.c創建,這些線程訪問寫在其他文件中的函數。
正在做make ...出現如下錯誤。
/home/Juggler/client/libclient.a(client.o):In function 'setup_connection':
/home/Juggler/client/client.c:35: undefined reference to 'pthread_setspecific'
pthread.h已經包含在這兩個client.c和libclient.c
將是anypointers感激。我理解的信息就非常少了......
感謝
謝謝...我需要添加-pthread標誌編譯備份。 C –