详细报错截图:
- 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后面。
建议:
将静态库放在前面,动态库放在后面。