系统默认有一套 boost 库,但是比较的老旧;然后我自己本地也编译了一套 boost 库,稍微新一些。
新库和老库不兼容,但是有多套系统使用这个环境,所以新老都必须保留。
请问有什么方法,让 g++编译的时候默认选择老库,但是通过某些方式可以优先选择新库的形式来编译呢?这里主要包括头文件和库文件,连接的话使用静态链接。

系统默认有一套 boost 库,但是比较的老旧;然后我自己本地也编译了一套 boost 库,稍微新一些。
新库和老库不兼容,但是有多套系统使用这个环境,所以新老都必须保留。
请问有什么方法,让 g++编译的时候默认选择老库,但是通过某些方式可以优先选择新库的形式来编译呢?这里主要包括头文件和库文件,连接的话使用静态链接。
1 shylockhg Nov 26, 2018 没听懂 |
2 shylockhg Nov 26, 2018 哦,可以改.a 的软连接。。 |
3 bp0 Nov 26, 2018 用来做交叉编译的 g++是有--sysroot 选项的,这个选项可以指定头文件和库文件的路径。 我这边的 mingw 中的 g++也有类似选项,楼主可以自己--help 看一下自己的 g++是否支持。 |
4 wutiantong Nov 26, 2018 无论是写 makefile 还是写 cmake 都能搞定这个的呀 |
5 shylockhg Nov 26, 2018 也可以用-l:libname.version |
6 bp0 Nov 26, 2018 补充一下,如果头文件相同,可以在编译的时候指定-L 选项。这个选项用来指定库文件的路径。 |
7 xiaottt OP @bp0 Directories named by -I are searched before the standard system include directories. ENVIRONMENT Note that you can also specify places to search using options such as -B, -I and -L. These take precedence over places specified using environment variables, which in turn take precedence over those specified by the configuration of GCC. 看了一下文档,好像是有这么一说。 我来试试看 |
8 coderluan Nov 26, 2018 正经的是写 makefile,不正经的话可以用 shell 和环境变量解决。 |
9 zbcwilliam Nov 26, 2018 makefile |
10 zynlp Nov 26, 2018 via iPhone 两个不同版本库,同时存在,要么放不同目录,要么改名字, 如果头文件都不一样,代码里就用宏去控制 include 的文件 make 的时候指定要链接的库 ps:远离 boost |
11 aa514758835 Nov 26, 2018 linux 环境变量。windows 的话 在 vs 里面设置 |