Ubuntu系统C++编译

版权声明: https://blog.csdn.net/dadan1314/article/details/86691466

典型例子

makefile内容如下:

main : main.cpp
    g++ -o main main.cpp -std=c++11 -g `sdl2-config --cflags --libs` -I./includes -L./lib -ldtypestd -Wl,-rpath ./lib

分析:

-std=c++11 指定用c++11标准

-g                表示可以用gdb调试

-I                 指定头文件包含目录

-L                指定编译时依赖的动态库

-l                 指定具体依赖的去头掐尾库名称

-Wl,-rpath   为运行库添加一个搜寻目录

-m32          指定生成x86架构目标,即32位

-m64          指定生成x86_64架构目标,即64位

-shared -fPIC 指定生成动态库

-DLINUX    指定LINUX宏定义

`...`             

编译参数

链接参数

关于头文件

搜索-l指定目录,搜索环境变量CPLUS_INCLUDE_PATH指定目录,搜索编译器内定目录。

(环境变量添加目录如下:

export CPLUS_INCLUDE_PATH=XXX:$CPLUS_INCLUDE_PATH

( 编译器内定目录如下:

/usr/include 

/usr/local/include

/usr/lib/gcc/x86_64-linux-gnu/4.8/include

( 另外冒号引用的头文件会先搜索当前目录)

关于链接库

库搜索环境变量LD_LIBRARY_PATH

ln -s <库> <类似快捷方式>

ldconfig -n <目录>                     生成so文件的软连接

ldd <库> 或 ldd <执行体>          查看库和执行体之间的依赖关系

readelf -h *.so                           显示elf文件的头(magic字段第五个字节,01代表32位,02代表64位)

readelf -d *.so                           显示so文件动态区域信息(soname信息)

顺序是前面依赖后面库

关于库模块

pkg-config来管理库模块,注意通过 /usr/lib/pkgconfig/和PKG_CONFIG_PATH中寻找*.pc文件;

模块搜索环境变量PKG_CONFIG_PATH(搜索所有*.pc)

pkg-config <模块名> --cflags --libs

关于多编译器

查看版本

gcc -v

g++ -v

查看编译器支持GLIBCXX 和 GLIBC版本

strings /usr/lib/gcc/x86_64-linux-gnu/5.4.0/libstdc++.so | grep GLIBC

安装
sudo apt-get install gcc-4.8  g++-4.8

配置gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40

选择gcc版本

sudo update-alternatives --config gcc

移除gcc版本

sudo update-alternatives --remove gcc /usr/bin/gcc-4.8

配置g++

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 40

选择g++版本

sudo update-alternatives --config g++

移除g++版本

sudo update-alternatives --remove g++ /usr/bin/g++-4.8

添加仓库安装gcc6   (https://ftp.gnu.org/gnu/gcc/          https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/)

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-6

集成开发环境

ubuntu 16.04安装codeblocks

sudo add-apt-repository ppa:damien-moore/codeblocks-stable
sudo apt-get update
sudo apt-get install codeblocks codeblocks-contrib

Ubuntu 18.04安装codeblocks

sudo add-apt-repository ppa:pasgui/ppa
sudo apt-get update
sudo apt-get install codeblocks
sudo apt-get install codeblocks-contrib

猜你喜欢

转载自blog.csdn.net/dadan1314/article/details/86691466
今日推荐