如何通过g++编译一个linux程序

项目结构和内容

1. 项目结构

2. 项目内容

  • swap.h

  • swap.cpp:包含swap.h

  • main.cpp:包含swap.h


编译成可执行文件

// 头文件路径包含./include

g++ main.cpp src/swap.cpp -Iinclude -o main


生成静态库&链接生成可执行文件

生成可执行文件

// 进入src目录下

cd src

// 汇编,生成swap.o文件

g++ swap.cpp -c -I../include

// 生成静态库libswap.a

ar rs libswap.a swap.o

// 回到上级目录

cd ..

// 链接,生成可执行文件:staticmain

g++ main.cpp -Iinclude -Lsrc -lswap -o staticmain


运行可执行文件

// 运行可执行文件

./staticmain


生成动态库&链接生成可执行文件

生成可执行文件

// 进入src目录下

cd src

// 生成动态库libswap.so

g++ swap.cpp -I../include -fPIC -shared -o libswap.so

// 上面命令等价于以下两条命令

// g++ swap.cpp -I../include -c -fPIC

// g++ -shared -o libswap.so swap.o

// 回到上级目录

cd ..

// 链接,生成可执行文件:sharemain

g++ main.cpp -Iinclude -Lsrc -lswap -o sharemain


运行可执行文件

// 运行可执行文件

LD_LIBRARY_PATH=src ./sharemain

问题解决:

①编译时报错:

/home/yongheng.cai/Version_czce/demo/APIDemo/libZCEFTDAPI.so: undefined reference to `timer_settime'
/home/yongheng.cai/Version_czce/demo/APIDemo/libZCEFTDAPI.so: undefined reference to `timer_delete'
/home/yongheng.cai/Version_czce/demo/APIDemo/libZCEFTDAPI.so: undefined reference to `timer_create'

解决:在编译时添加 -lrt

②编译时报错:
.so: undefined reference to `dlsym'
.so: undefined reference to `dlerror'
.so: undefined reference to `dladdr'
.so: undefined reference to `dlopen'
.so: undefined reference to `dlclose'


解决:在编译时添加 -ldl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值