您的位置:首页 > 运维架构 > Linux

使用VisualGDB在windows上编写linux程序(centos)遇到的问题

2017-05-13 17:17 609 查看
1、编写多线程程序时,报错: undefined reference to `pthread_create',需要在设置中加上多线程的库.



2、使用自己编写的静态库时,需要在Addtional linker inputs中输入使用的库,include drectories中输入头文件路径:



3、使用动态库

我们可以在 ~/.bashrc 或者 ~/.bash_profile 中加入 export 语句,前者在每次登陆和每次打开 shell 都读取一次,后者只在登陆时读取一次。我的习惯是加到 ~/.bashrc 中,在该文件的未尾,可采用如下语句来使设置生效:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib   64位放在/usr/lib64下

然后把我们生成的动态库(或第三方库)拷贝到/usr/lib   64位放在/usr/lib64下
即可





设置如下图:
动态库工程设置:
可执行文件工程设置:




Library names中不需要输入libtest_shared.so只需要输入test_shared即可,同时对该设置保存时,有时会报错找不到目录下的***.so文件,如果确定该目录下确实存在该

文件,那么点击“ignore”即可






注:

1、也可以在centos终端用gcc/g++ 进行编译  g++ xxx.cpp xxx.so -o xxx,支持线程则g++ xxx.cpp xxx.so -o xxx -lpthread

2、
弄了很久最后发现一个简单的方法!!!!...工程属性->依赖库->选择依赖态库/动态库工程即可!!此种方法对于使用我们自己生成的库比较方便



4、使用VisualGDB编译链接skynet,运行程序时提示函数未定义.

原来是Makefile setting -> LDFLAGS为"-Wl,-gc-sections",而-gc-sections会使ld删除没有被使用的section,所以这里需要设置成"-Wl,-E"即可,当然设置的位置是

需要导出此未定义函数定义的工程,其它地方不用管
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: