解决Visual C++ for Linux: -L~/projects/path_to_lib_folder 无法设置library search path的问题...
最近倒腾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的问题...相关推荐
- 报错解决: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程序,就想着运行运行, ...
- 解决Visual SVN在linux下不能访问的问题
转自:http://blog.csdn.net/duguteng/article/details/7726536 错误原因是windows使用的证书linux不能识别. 改正方法是:修改服务器上vis ...
- visual studio编译linux,在 Visual Studio 中配置 Linux MSBuild C++ 项目
在 Visual Studio 中配置 Linux MSBuild C++ 项目Configure a Linux MSBuild C++ project in Visual Studio 10/16 ...
- Visual Studio 2005 Web Application Projects 项目Cool的地方
Visual Studio 2005 Web Application Projects 使用了跟 Visual Studio 2003 同样的Web编程模型,同时根据Visual Studio 200 ...
- Visual Studio 2005 Web Deployment Projects版本不同引发的问题
为了方便Visual Studio 2005发布为单一dll,微软发布了一个Visual Studio 2005 插件,Visual Studio 2005 Web Deployment Projec ...
- Visual Studio® 2010 Web Deployment Projects站点编译生成bin同时发表插件
VS2010环境下: 1.Visual Studio® 2010 Web Deployment Projects下载地址: http://www.microsoft.com/downl ...
- Visual Studio 2005 Web Application Projects 正式推出
Visual Studio 2005 Web Application Projects 正式推出拉,下载地址在 http://msdn.microsoft.com/asp.net/reference/ ...
- 解决 Visual Studio 2017 RC 不兼容低版本 Visual Studio 创建的 MVC 4 项目的问题
解决 Visual Studio 2017 RC 不兼容低版本 Visual Studio 创建的 MVC 4 项目的问题 参考文章: (1)解决 Visual Studio 2017 RC 不兼容低 ...
- 解决虚拟机 Virtualbox 中 linux 共享文件夹只读问题
解决虚拟机 Virtualbox 中 linux 共享文件夹只读问题 参考文章: (1)解决虚拟机 Virtualbox 中 linux 共享文件夹只读问题 (2)https://www.cnblog ...
- 解决Visual Code安装中文插件失败问题
解决Visual Code安装中文插件失败问题 参考文章: (1)解决Visual Code安装中文插件失败问题 (2)https://www.cnblogs.com/achillis/p/10449 ...
最新文章
- 【其他】配置JIRA
- zookeeper3.4.6安装
- android开发 eclipse alt+”/”自动提示失效
- 使用ADO.NET的参数集合来有效防止SQL注入漏洞
- 人工智障学习笔记——深度学习(3)递归神经网络
- 某大型银行深化系统技术方案之十四:服务层之服务调度机制
- 深入理解Javascript中构造函数和原型对象的区别
- 父类指针指向子类实例,用父类指针调用虚函数,调用的是子类的函数还是父类的函数...
- 南方cass10.1中文版
- 屏幕录像专家出现未注册字样
- JavaScript——监听事件:点击鼠标,视频静音(原神官网)
- 中信银行c语言笔试题库,中信银行笔试IT类复习题参考资料带答案解析.doc
- 剖析 Chrome 的小恐龙游戏
- 面向对象,继承封装的应用
- Python基础_第2章_Python运算符与if结构
- fatal error C1859的有效解决办法
- STM32中断优先级NVIC
- 二极管、三极管、晶闸管的区别
- 苹果手机代理charles(此链接非私人连接)
- Excel数据分列的三种方法