交叉编译及cmake的使用
一.Cmake的安装
Cmake的作用是生成工程的Makefile,以便于后期的编译
$ sudo apt-get install cmake
$ sudo apt-get install cmake-qt-gui
其它依赖库的安装:
$ sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libtiff4-dev libswscale-dev libjasper-dev
启动cmake执行命令:
$sudo cmake-gui
由于cmake工具的图像界面是依赖于Qt的,所以在执行cmake-gui时如果Qt版本不对应则会报错,无法启动,我碰到的错误如下:
cmake-gui: /usr/lib/porting/x86_64-linux-gnu/libQt5Gui.so.5: version `Qt_5' not found (required by cmake-gui)
cmake-gui: /usr/lib/porting/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.9' not found (required by cmake-gui)
cmake-gui: /usr/lib/porting/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5' not found (required by cmake-gui)
cmake-gui: /usr/lib/porting/x86_64-linux-gnu/libQt5Widgets.so.5: version `Qt_5' not found (required by cmake-gui)
解决方法如下,1.下载对应的Qt版本,然后到存在这些库的路径下启动cmake-gui
2.设置库的路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/gpc/Qt5.9.7/5.9.7/gcc_64/lib,然后再在该终端下执行cmake-gui
二.Autogen生成configure
sudo apt-get install autoconf autogen
通过执行软件包中的autogen.sh脚本文件来生成configure文件;
三.Configure命令
:./configure --build=x86_64-pc-linux-gnu --host=arm-linux-gnueabihf --with-protoc=protoc --prefix=/绝对路径的安装路径
--build表示本机环境,如果不清楚,在第一步,./configure时生成makefile时,查看打印信息,或插卡第一步生成的makefile
--host表示编译库的运行的环境,我的是arm架构cpu上运行,所以使用arm-linux-gnueabihf,而生成的makefile中--host选项是arm-unknown-linux-gnueabihf
--with-protoc=protoc,此选项的设置,是应为README.txt中所属,交叉编译需要增加此项,如果没有第一步得到部署protoc.exe,会出现错误
错误提示为:protoc找不到。
--prefix=path_of_arm_linux_lib,及设置为交叉编译工具arm-linux-gcc-4.4.3的lib目录的上层目录,--prefix设置的路径,就是make install时,
protobuf的Include,lib目录的拷贝目录。目的在编译时为使用google protobuf标准话的库应用方式(`pkg-config --cflags --libs protobuf`)。
如上配置好configure后,生成Makefile文件,确认CC/CCXX等是否等于arm-linux版本的命令。
四.参考文档
https://blog.csdn.net/adrian169/article/details/9051839
https://blog.csdn.net/qq_30155503/article/details/79983630