交叉编译总结
Why sum up
最近在做protobuf和zmq库在qnx系统下的交叉编译,遇到了不少问题,通过几天的努力解决了,所以现在在这里记录下这几天的心酸。
configure
交叉编译一般分以下步骤:进入库的文件夹下,如:cd protobuf-3.8.0,然后查看是否有.autogen.sh文件,执行./autogen.sh或者sh autogen.sh,执行完后会发现文件夹中多了个configure文件,这个文件就是交叉编译的核心,我们将用这个文件生成makefile。在生成makefile之前我先讲讲./configure需要配置的参数。
./configure 最关键的三个选项为 --host --target --build---prefix
--host=HOST 其中HOST为指定软件运行的系统平台。当不知道HOST是啥时,可以通过查看交叉编译器的版本查询,比如我用的是ntoaarch64-g++编译器进行交叉编译的,首先在终端中输入 which ntoaarch64-g++获取该编译器的路径,然后cd到该路径下,输入 ntoaarch64-g++ -v 获取该编译器所需要的configure with信息。
--target=TARGET,TARGET指定软件面向(target to)的系统平台.这主要在程序语言工具如编译器和汇编器上下文中起作用.如果没有指定TARGET,默认将使用--host选项的值.。
--build=BUILD,BUILD指定的是编译器完成整个build的工程的机器结构。我这里的BUILD写的是i686-pc-linux-gnu。
其次--prefix=PREFIX是指该库最后生成的目录路径。
make 和make install
接着执行make -j4,等待完成后执行 sudo make install,不出意外交叉编译成功。
总结
我觉得最重要的就是configure参数要配对,弄清楚每个选项的意义,然后在正确的地方查看选项参数,即查看交叉编译所用的编译器的版本信息。