最近倒腾Linux C/C++项目。以目前的情况来说,要生成编译(build)一个Linux工程脚本,首选的工具必定是CMake。这也是我之前Linux项目的首选。不过自从VS IDE支持Linux C/C++开发后,也尝试这通过一些小demo来体验MS的解决方案。总得来说还可以,但是有个大问题因为一直没时间搞,就没有深入。

这里通过一个假定的场景来说这个问题。

在VS Linux项目里,如果一个解决方案下面有多个工程,比方说有两个工程A(.out)和B(.so),当工程A依赖工程B时我们需要设置工程的依赖关系,保证编译工程A时能先把依赖库编译出来。设置方式如下图:

设置完依赖关系后还要保证编译A时能够链接到已经生成的libB.so。这需要在工程属性页里Configuration Properties / Linker / Input : Libraries Dependencies里加上B。当然这还不够,因为链接指定的是so的名字,并没有指定so的路径。所以,要找到so必须知道so文件在哪里。除了使用绝对路径外,更好的方案显然是指定库文件的目录。正常情况下,类库文件都会统一编译到一个指定的目录下。

在VS的环境里,本地$(SolutionDir)默认映射到远程的$(RemoteRootDir)。而$(RemoteRootDir)默认是"~/projects"。所以如果统一将二进制文件编译到$(SolutionDir)bin\$(Platform)\$(Configuration)的话,对应地,在远程Linux上会被部署在"$(RemoteRootDir)/bin/$(Platform)/$(Configuration)"目录下。于是通过属性页向Configuration Properties / Linker / General : Additional Library Directories添加"$(RemoteRootDir)/bin/$(Platform)/$(Configuration)"就从理论上解决了链接时-lB到哪里找libB.so的问题了。但是,经过尝试之后你会发现,这样做并没有解决链接时找不到libB.so的问题。

之前并没有长期做Linux开发,所以对GCC编译选项的使用也就主要花时间看了看各种警告选项。对于大小L的链接选项,也是一样,只是知道是干嘛,但是对于输入字串的格式是不是有严格要求还真不知道。于是,我就遇到了本文要说的这个问题。只要Additional Library Directories里的路径是通过"~"来定位的,就必然会遇到VS环境下编译时找不到库文件的问题(当然我并不清楚在Linux上直接使用GCC编译链接是不是会遇到同样的问题)。

要解决这个问题,要么向前文说的,使用绝对路径。这显然不是个好方法,特别是自定义的类库比较多的时候。另外一种方法是将"~"使用绝对路径替换。也就是说将$(RemoteRootDir)的值从"~/projects"改为"/home/user_name/projects"。这就得保证在多个机器上使用VS远程编译时机器上的用户名都是同一个,不然要不停地改,也是作孽。

其实最好的方法是将$(RemoteRootDir)改为"$HOME/projects"。

完~

转载于:https://www.cnblogs.com/wpcockroach/p/6875474.html

解决Visual C++ for Linux: -L~/projects/path_to_lib_folder 无法设置library search path的问题...相关推荐

  1. 报错解决:Unable to find a `./myhdl.vpi‘ module on the search path.以及 %1 is not a valid Win32 application

    问题产生 在学习Verilog进行FFT的时候,从GitHub上找到了一个相关代码fft-dit-fpga.代码中不仅给出了Verilog代码,还附加了一个仿真测试的python程序,就想着运行运行, ...

  2. 解决Visual SVN在linux下不能访问的问题

    转自:http://blog.csdn.net/duguteng/article/details/7726536 错误原因是windows使用的证书linux不能识别. 改正方法是:修改服务器上vis ...

  3. visual studio编译linux,在 Visual Studio 中配置 Linux MSBuild C++ 项目

    在 Visual Studio 中配置 Linux MSBuild C++ 项目Configure a Linux MSBuild C++ project in Visual Studio 10/16 ...

  4. Visual Studio 2005 Web Application Projects 项目Cool的地方

    Visual Studio 2005 Web Application Projects 使用了跟 Visual Studio 2003 同样的Web编程模型,同时根据Visual Studio 200 ...

  5. Visual Studio 2005 Web Deployment Projects版本不同引发的问题

    为了方便Visual Studio 2005发布为单一dll,微软发布了一个Visual Studio 2005 插件,Visual Studio 2005 Web Deployment Projec ...

  6. Visual Studio® 2010 Web Deployment Projects站点编译生成bin同时发表插件

    VS2010环境下: 1.Visual Studio® 2010 Web Deployment Projects下载地址:         http://www.microsoft.com/downl ...

  7. Visual Studio 2005 Web Application Projects 正式推出

    Visual Studio 2005 Web Application Projects 正式推出拉,下载地址在 http://msdn.microsoft.com/asp.net/reference/ ...

  8. 解决 Visual Studio 2017 RC 不兼容低版本 Visual Studio 创建的 MVC 4 项目的问题

    解决 Visual Studio 2017 RC 不兼容低版本 Visual Studio 创建的 MVC 4 项目的问题 参考文章: (1)解决 Visual Studio 2017 RC 不兼容低 ...

  9. 解决虚拟机 Virtualbox 中 linux 共享文件夹只读问题

    解决虚拟机 Virtualbox 中 linux 共享文件夹只读问题 参考文章: (1)解决虚拟机 Virtualbox 中 linux 共享文件夹只读问题 (2)https://www.cnblog ...

  10. 解决Visual Code安装中文插件失败问题

    解决Visual Code安装中文插件失败问题 参考文章: (1)解决Visual Code安装中文插件失败问题 (2)https://www.cnblogs.com/achillis/p/10449 ...

最新文章

  1. 【其他】配置JIRA
  2. zookeeper3.4.6安装
  3. android开发 eclipse alt+”/”自动提示失效
  4. 使用ADO.NET的参数集合来有效防止SQL注入漏洞
  5. 人工智障学习笔记——深度学习(3)递归神经网络
  6. 某大型银行深化系统技术方案之十四:服务层之服务调度机制
  7. 深入理解Javascript中构造函数和原型对象的区别
  8. 父类指针指向子类实例,用父类指针调用虚函数,调用的是子类的函数还是父类的函数...
  9. 南方cass10.1中文版
  10. 屏幕录像专家出现未注册字样
  11. JavaScript——监听事件:点击鼠标,视频静音(原神官网)
  12. 中信银行c语言笔试题库,中信银行笔试IT类复习题参考资料带答案解析.doc
  13. 剖析 Chrome 的小恐龙游戏
  14. 面向对象,继承封装的应用
  15. Python基础_第2章_Python运算符与if结构
  16. fatal error C1859的有效解决办法
  17. STM32中断优先级NVIC
  18. 二极管、三极管、晶闸管的区别
  19. 苹果手机代理charles(此链接非私人连接)
  20. Excel数据分列的三种方法

热门文章

  1. MVC3学习 七 Razor使用、路由模块、框架自带校验
  2. nginx关于错误页面重定向的问题
  3. ubuntu下gedit查看txt中文乱码解决办法
  4. MyEclipse中的ant初识
  5. windows 服务的安装与卸载之bat脚本命令
  6. OAUI前台设计(二)
  7. Redis数据类型之字符串String
  8. android学习之ListView如何使用
  9. memcached学习(5). memcached的应用和兼容程序
  10. Zero Sum chapter 2.3 dfs