2023年8月3日发(作者:)
Linux-交叉编译-gpsd1. gpsd源码下载我这⾥下载的是:2. ubuntu 下安装交叉编译⼯具链以及编译⼯具scons1) 确保ubuntu系统已经安装python2) 安装交叉编译⼯具链 arm-linux-gnueabihf-gccsudo apt-get install gcc-arm-linux-gnueabihf
3) 安装编译⼯具 sconsscons是linux下的⾃动构建⼯具,类似 apt-get install scons3. 交叉编译依赖库libusblibncurses(1)安装libusb1. 下载libusb下载⽹址:我这⾥下载是:22) 交叉编译libusb将下载好的libusb压缩包解压后进⼊⽂件libusb-1.0.22。执⾏下列指令:./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux --prefix=$PWD/arm_install --disable-udev;CC指定交叉编译⼯具–host指定⽬标主机,linux表⽰linux平台,arm-linux表⽰arm平台–prefix指定安装⽬录$PWD/arm_install表⽰在当前⽬录下的arm_install⽬录。为防⽌报错,–disable-udev ,⽤于去掉对udev库的依赖。3) 编译:make4) 安装:make install5) 交叉编译⽣成的库⽂件⽬录:arm_install/lib/需要将 等⽂件压缩打包(有软连接)拷贝⾄ gpsd源码⽬录下,gpsd交叉编译时要⽤到。6)编译时报错处理若执⾏./configure命令时报错,找不到libudev,解决办法如下:(2)安装libncurses./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux --prefix=$PWD/arm_install --with-shared其中:
–prefix 是指定⽣成⽂件的路径–host 指定的是交叉编译⼯具链的前缀–with-shared ⽣成动态库3) 编译:make (时间较长,耐⼼等待)该错误的意思是 进⼊到⽬录下ncurses-6.1/progs 下执⾏ tic 可执⾏⽂件时,⽆法识别⽂件格式。 使⽤ file 命令查看⼀下这个 tic ⽂件的格式:发现它是arm平台的,当然⽆法在pc上运⾏。如果pc机上已经安装过ncurses(ncurses是配置内核、根⽂件系统等需要⽤到make menuconfig必备的库),那么pc上⼀定有可以在pc运⾏的tic。此时,我们find⼀下tic 。命令:find / -name “tic”发现/usr/bin/⽬录下有tic:file /usr/bin/tic这个是x86平台的tic,我们将 /usr/bin下的tic拷贝⾄ /home/heat/tronlong/debug_tools/gpsd/ncurses-6.1/progs ⽬录,替换该⽬录下的tic返回源码根⽬录下,继续 make install ,⼜报错:⽆法识别⼆进制⽂件 toe。问题和上⾯的 tic 类似。我们看⼀下 ncurses-6.1/progs ⽂件列表:发现还有好⼏个可执⾏⽂件,索性⼀次性都从 /usr/bin 下拷贝过来:返回源码根⽬录下,继续 make install最后总算安装成功了。5) 交叉编译⽣成的库⽂件⽬录:arm_install/lib/我这⾥将⽣成的 libncurses 相关的⽂件全部打包后拷贝⾄ gpsd 源码⽬录下,然后解压缩,因为libncurses库建⽴了⼏个软连接,直接拷贝过去软连接就⽊有了,所以先压缩后解压缩。依赖库编译完了,下⾯就该转战 gpsd 的源码⽬录下,去编译gpsd了。(3)安装libtinfolibtinfo 库是 libncurses 的组成部分,所以建⽴libtinfo软连接:还是在ncurses-6.1/arm_install/lib ⽬录下,执⾏以下命令:ln -s .6 .6ln -s .6 执⾏命令后:将⽣成的libtinfo库压缩,拷贝⾄gpsd 的源码⽬录,然后解压缩。如果已经将libncurses库拷贝⾄gpsd 的源码⽬录,也可以到gpsd 的源码⽬录下建⽴libtinfo 的软连接。不必来回拷贝,⿇烦。4. 交叉编译 gpsd(1)重要操作:⾸先切换到 root ⽤户下,然后进⼊ gpsd源码⽬录。确保上⾯⽣成的依赖库已经拷贝⾄源码⽬录:(2)可以参考源码⽬录下的 INSTALL 和 ⽂件,⾥⾯详细介绍了 gpsd 的交叉编译过程。Refer INSTALL and in gpsd source(3)创建cache ⽂件⾸先创建了cache ⽂件,该⽂件⼀开始并不存在:vi .scons-option-cachelibgpsmm = Falsepython = Falseprefix = '/home/heat/tronlong/debug_tools/gpsd/gpsd-3.18/bin/gpsd'target = 'arm-linux-gnueabihf'target:指定交叉编译⼯具;prefix:指定编译⽣成后的可执⾏⽂件路径。(4)执⾏编译命令:scons注意:如果将gpsd配合 ntpd使⽤,建议加上以下参数进⾏编译:scons timeservice=yes nmea0183=yes fixed_port_speed=9600 fixed_stop_bits=1Run scons in gpsd source folder执⾏成功:(5)执⾏命令:scons check执⾏该命令报了⼀些错误,先不管了,不影响install。(6)执⾏命令:scons install执⾏成功(7)如果需要USB热插拔功能,执⾏命令:scons udev-install参考:gpsd的启动项在源码⽂件中也有,有启动项和配置⽂件,详细阅读!(8)清除编译的⽂件等命令在 ⽂件中可以找到。scons check、scons install、scons udev-install的功能介绍。(9)进⼊编译⽣成的可执⾏⽂件⽬录:将sbin⽬录下的 gpsd可执⾏⽂件拷贝⾄开发板的/bin⽬录下,执⾏gpsd –h查看命令是否可以执⾏。这⾥拷贝⾄创龙AM5728开发板上执⾏:
发布者:admin,转转请注明出处:http://www.yc00.com/news/1691034259a491552.html
评论列表(0条)