首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux上链接c++库

在Linux上链接c++库
EN

Stack Overflow用户
提问于 2015-01-10 13:18:00
回答 2查看 2.4K关注 0票数 0

我正在运行以下命令:

代码语言:javascript
复制
g++ -m32 testLogin.cpp  -L/root/c++/libs  -ldvrnetsdk -o testLoginO -lpthread  -lasound 

结果:

代码语言:javascript
复制
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_hw_params_set_channels'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `pthread_mutex_trylock'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_readi'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_hw_params_set_access'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_strerror'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `pthread_mutexattr_settype'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_hw_params_set_rate'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_close'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_hw_params_malloc'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_hw_params_set_period_size'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `pthread_mutex_timedlock'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `pthread_mutexattr_destroy'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_drain'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_hw_params_free'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `pthread_create'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_open'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_hw_params_set_format'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_writei'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `pthread_mutexattr_init'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_hw_params'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_hw_params_any'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `snd_pcm_prepare'
/root/c++/libs/libdvrnetsdk.so: undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status

在此错误发生后,我做的第一件事是包含库-lpthread -lasound,我也处理参数顺序,但没有工作。我相信任何帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-10 13:32:01

对于gcc来说,联系的顺序很重要。

所以,试着用不同的顺序。

代码语言:javascript
复制
 g++ -m32 testLogin.cpp  -L/root/c++/libs -lpthread -lasound -ldvrnetsdk -o testLoginO

有关顺序,请参阅此问题:Why does the order in which libraries are linked sometimes cause errors in GCC?

或者,您可以使用“开始组”选项。

代码语言:javascript
复制
gcc -m32 testLogin.cpp  -L/root/c++/libs -Wl,--start-group -lpthread -lasound -ldvrnetsdk -Wl,--end-group -o testLoginO

编辑:当您仍然得到错误时,请在库中的字符串上使用nm,并检查链接器错误所在的符号是否在库中。检查库版本。你可能在64位内核上。

票数 0
EN

Stack Overflow用户

发布于 2015-01-10 13:22:18

你试过用-pthread作为链接器flag...sometimes吗?

这应该能行

g++ -m32 testLogin.cpp -L/root/c++/libs -ldvrnetsdk -pthread -lasound

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27876639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档