‘壹’ 用不同版本GCC编译出的库只能用对应的GCC使用吗
不同版本的动态库是为了升级方便,旧的程序需要与旧的库链接,新的程序与新的.
一般的做法是把libabc.so连接(symbolic link, ln -s libabc.so.N libabc.so)到最新的版本,这样以后的新程序,在用gcc -labc的时候,都会链接到新的版本.旧的已经链接好的程序并不会产生不兼容的问题,因为旧程序在过去已经链接过了(动态库链接的信息可以用ldd来查看: ldd /bin/ls).
symbolic link, ln是推荐的维护版本的办法,不建议更改文件名.
如果你要有一个方便的办法链接旧的版本, 建一个旧的版本的symbolic link就可以了,libabc11.so
ln -s libabc.so.11 libabc11.so
gcc -labc11...
‘贰’ gcc 能编译 c++ 吗
可以,GCC包括很多的组件,可以便宜各种源代码程序。编译C++代码时使用g++就可以,格式:g++ ***.cpp -o ***
‘叁’ gcc 编译带调试信息会影响性能吗
gcc编译加-d加入调试信息,会尽可能加载所有库的符号表,调用函数会尽可能调用debug模式(如果有),去掉所有编译优化,所以肯定是有点影响性能的
‘肆’ 编译环境与生产环境gcc版本不一致是否会有问题
有一些abi兼容性问题,如果你的程序有静态或动态链接不全支持c++11的libc的话。
如果你的程序完全是用gcc 4.84编译链接出来,也没有动态链接低版本的libc的话应该没有问题
‘伍’ 升级gcc,会不会影响其它软件
在 linux 系统下,升级 C 语言编译器 gcc,不会影响其他的应用软件。
‘陆’ 装了两个版本的GCC,怎么规定用哪一个
如果你的两个版本的 gcc C 编译器是安装在不同的路径下的话,那么就很好办:你可以在环境设置文件中修改 PATH 环境变量:假设:环境设置文件的文件名为:my_environment,gcc version 1 是安装在 /usr/sbin1 下的话,gcc version 2 是安装在 /usr/sbin2 下的话,那么你就可以编辑 my_environment 文件,并修改其中的 PATH 变量。
例如:PATH = /usr/sbin2 ; /usr/sbin1,/usr/sbin1 在 /usr/sbin2 之后。这样的话,系统就会自动调用 /usr/sbin2 下的 gcc 编译程序。如果想使用 gcc version1版本的编译程序,则再次修改该变量即可。
‘柒’ 已经安装GCC 却不能编译
找不到hello.c的目录,你在shell里面进去的那个目录不是hello.c在的哪个目录,先进shell,然后再进hello.c在的那个目录,然后再执行你执行的那个命令看看
‘捌’ 用高版本编译低版本gcc的问题
据说要低版本的才能编译高版本的
‘玖’ gcc可以编译c++吗
狭义的gcc指的是gcc这个可执行文件,它是linux上的标准c语言编译器,是不可以编译c++的。
广义的gcc是指linux编译工具,安装gcc的时候,都会有g++的可执行文件同时被安装。
所以从这个角度上gcc可以编译c++,不过编译命令需要选g++。
可以在shell下打
g++ --version
如果可以正确显示版本信息,而不是无法找到命令,那么就是可以编译c++的。