目录
一、源起
因为之前开发的软件已经初步完成了,是windows平台的,后期要向linux进行跨平台迁移,所以先做了一些简单测试。
开发语言C/C++所以本身就具备跨平台的能力,具体代码开发中只要是c++标准库的那套东西基恩上就不用改什么了。唯一要改的就是工程构建了,window的IDE有vs,linux上可选性就多了。
初步还是先试了以下 vscode + gcc编译。
主要是工程构建,具备工程化的一些构建内容测试,比如动态链接库等一些,所以仅此记录,谨防遗忘吧。
二、准备工作
所以实际将window的vs项目进行linux迁移所需做的内容并不是很复杂,因为项目开发初期的时候使用的也都是标准c++的库内容,所以相对要改动的比较少了。
1.vs工程的预编译头文件等一些window专用平台的内容去除。
2.VS的toolchain是MSVC相关专用代码,进行条件编译更改。
3.重新构建一个windows与Linux的项目管理工程。
三、linux上静态/动态库的基础认识与测试
g++ .so 动态连接库的编译实际参考如下:
.a 静态连接库
.so 动态连接库
同时gcc编译套件,在编译库文件名称时候存在默认规则加入前缀lib
主要是以下几条基础语法使用。
#编译成动态连接库
g++ test.cpp -fPIC -shared -o libtest.so
#连接动态连接库并编译成可能执行文件
g++ main.cpp -L. -ltest -o main(具体的可执行文件名称)
#查看可执行文件中是否正确引用了库
ldd main(具体的可执行文件名称)
#当前库路径设置
export LD_LIBRARY_PATH=./
有了上面的初步库文件编译基础后,就可以构建更加大型的项目了。
四、实操
实际上本次测试是失败的,因为实际工程构建的时候不可能自己一条、一条去敲编译指令。
所以需要用到Cmake makefile等工程构建工具,但是具体怎么选择,目前也在纠结中...
同时第二步准备工作也已经完成了50%了,
所以等后面整个工程构建全部完成的时候,在来补充吧。