详细报错截图:
gcc -std=gnu99 -Wall -O0 -g -o /home/book/SVN/LM20007/automatic_test/bin/autoTest
/home/book/SVN/LM20007/automatic_test/source/obj/main.o
-lpthread -lm -ldl -lrt -rdynamic
-L /home/book/SVN/LM20007/automatic_test/lib -lHidCommu -lEasyLogger -lusb-1.0 -lstdc++
/usr/bin/ld: /home/book/SVN/LM20007/automatic_test/lib/libHidCommu.a(cstring.o):
undefined reference to symbol 'pthread_spin_init@@GLIBC_2.2.5'
/lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols:
DSO missing from command line
collect2: error: ld returned 1 exit status
解决办法:
在链接阶段,将-lpthread放在-lHidCommu之后即可。
原:
LDFLAGS := -lpthread -lm -ldl -lrt -rdynamic
LDFLAGS +=-L $(DIR_TOP)/lib -lHidCommu -lEasyLogger -lusb-1.0 -lstdc++
修改后:
LDFLAGS := -lm -ldl -lrt -rdynamic
LDFLAGS +=-L $(DIR_TOP)/lib -lHidCommu -lEasyLogger -lusb-1.0 -lpthread -lstdc++
原因分析:
-lHidCommu该静态库找不到-lpthread,需要将-lpthread放在-lHidCommu后面。
建议:
将静态库放在前面,动态库放在后面。