项目结构和内容
1. 项目结构
2. 项目内容
swap.h
swap.cpp
:包含swap.hmain.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