- 主题:需要在多种linux平台上运行的代码,怎么选择编译器版本?
1、编译器是gcc。需要在多种linux平台上运行,这些平台上自带的libstdc++.so可能差异较大。
2、但是我又想用C++20(新版本std带来的好处,不用就是暴殄天物?还有就是一部分代码来自MSVC,MSVC已经完全支持C++20),而不是限定在C++11或者C++14。
目前的想法是:
1、用gcc 11或者12,这样能支持大部分c++20特性。
2、如果和os目录下的libstdc++.so不兼容,那么在自己目录下自带一个libstdc++.so。
但这有个新的问题,libstdc++和os自带的libgcc的接口兼容问题。
为了避免这个问题,可以采用全部静态链接到libstdc++和libgcc,但同样有libgcc和os接口兼容的问题(虽然概率越来越小)。如果用-static全部静态链接,概率会增大,不可取。
大家在实践中怎么搞定这个问题的?还是说就用各目标平台能支持的C++11/14/17/20中最低的那个std完事?
--
修改:z16166 FROM 222.130.137.*
FROM 222.130.137.*
虚拟机大法啊
一个target platform 一个虚拟机 纯独立编译呗
【 在 z16166 的大作中提到: 】
: 1、编译器是gcc。需要在多种linux平台上运行,这些平台上自带的libstdc++.so可能差异较大。2、但是我又想 ...
--
FROM 183.137.132.*
你的第二条,必然导致有些发行版本不能用。
就是纯开源的软件,我记得^_^ sudo apt-get install 时也记得经常遇到请升级gcc的提示。如果你的软件依赖第三方包,出问题概率继续加大。
取主流版本的最大公约数吧,先弄出来。碰见冷门版本再说。
【 在 z16166 的大作中提到: 】
: 1、编译器是gcc。需要在多种linux平台上运行,这些平台上自带的libstdc++.so可能差异较大。
: 2、但是我又想用C++20(新版本std带来的好处,不用就是暴殄天物?还有就是一部分代码来自MSVC,MSVC已经完全支持C++20),而不是限定在C++11或者C++14。
: 目前的想法是:
: ...................
--
FROM 61.185.160.*
docker大法啊,所有依赖全打在容器里,到哪都一样
【 在 z16166 的大作中提到: 】
: 1、编译器是gcc。需要在多种linux平台上运行,这些平台上自带的libstdc++.so可能差异较大。
: 2、但是我又想用C++20(新版本std带来的好处,不用就是暴殄天物?还有就是一部分代码来自MSVC,MSVC已经完全支持C++20),而不是限定在C++11或者C++14。
: 目前的想法是:
: ...................
--
FROM 115.171.108.*
最后的部署,没法虚拟机。
最好是只需要针对某个架构编译一次,就能部署在同架构的不同版本上。
再差点的,是针对同架构的不同版本,每个版本都编译一次。
【 在 ziqin 的大作中提到: 】
: 虚拟机大法啊
: 一个target platform 一个虚拟机 纯独立编译呗
--
修改:z16166 FROM 222.130.137.*
FROM 222.130.137.*
客户端软件,用不了docker
【 在 jimmycmh 的大作中提到: 】
: docker大法啊,所有依赖全打在容器里,到哪都一样
--
FROM 222.130.137.*
第三方库都可以静态库链接
【 在 DoorWay 的大作中提到: 】
: 你的第二条,必然导致有些发行版本不能用。
: 就是纯开源的软件,我记得^_^ sudo apt-get install 时也记得经常遇到请升级gcc的提示。如果你的软件依赖第三方包,出问题概率继续加大。
: 取主流版本的最大公约数吧,先弄出来。碰见冷门版本再说。
: ...................
--
FROM 222.130.137.*
docker容器运行起来就是个普通进程,基本没见过用不了的程序
【 在 z16166 的大作中提到: 】
: 客户端软件,用不了docker
--
FROM 115.171.108.*
我这个恰恰用不了,带有driver,是逃逸了docker的。
【 在 jimmycmh 的大作中提到: 】
: docker容器运行起来就是个普通进程,基本没见过用不了的程序
:
--
FROM 222.130.137.*
kernel module?没问题啊,用privileged mode
另外,不懂逃逸docker是什么意思
docker不过是layered fs加namespace,跟普通进程基本是没区别的
【 在 z16166 的大作中提到: 】
: 我这个恰恰用不了,带有driver,是逃逸了docker的。
--
FROM 115.171.108.*