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

1、编写多线程程序时,报错: undefined reference to `pthread_create',需要在设置中加上多线程的库.

使用VisualGDB在windows上编写linux程序(centos)遇到的问题_第1张图片

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

使用VisualGDB在windows上编写linux程序(centos)遇到的问题_第2张图片

3、使用动态库

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

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib   64位放在/usr/lib64下
然后把我们生成的动态库(或第三方库)拷贝到/usr/lib   64位放在/usr/lib64下
即可
 
  
 
  
 
  
 
  
 
  
 
  
设置如下图:
动态库工程设置:
 
  
可执行文件工程设置:
使用VisualGDB在windows上编写linux程序(centos)遇到的问题_第3张图片
 
  
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"即可,当然设置的位置是
   需要导出此未定义函数定义的工程,其它地方不用管

你可能感兴趣的:(LINUX,服务器开发,C++)