忙碌的libmount
之前遇到libmount格式不争取的问题,今天再整理一下
会遇到libmount.so格式不正确的问题,说我们之前安装的是x86版本的。
所以需要重新编译个arm版本的。
官方下载util-linux源文件
http://ftp.ntu.edu.tw/pub/linux/utils/util-linux/v2.32/
交叉编译
./configure CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --prefix=/home/william/gstreamer/libmount/util-linux-2.32/install --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
但是,又遇到了automake不对的问题
执行:
aclocal
automake
再次进行编译,遇到了python不是交叉编译的问题,所以继续下载python,然后安装python3.6
https://www.python.org/downloads/source/ 下载3.6.9的source
xz-d *
tar xvf xxx.tar -C /xxx/xxx
编译
./configure CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --host=arm-linux-gnueabihf --build=x86_64-linux --prefix=$(pwd)/install ac_cv_file__dev_ptc=no ac_cv_file__dev_ptmx=no --disable-ipv6
make
make install
虽然最后会报错pip错误,但是请忽略之。
接着回到libmount的编译。在此之前,运行如下语句
./configure --prefix=/home/william/gstreamer/libmount/util-linux-2.32/install --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf LDFLAGS="-L/home/william/gstreamer/Python-3.6.9/install/lib" CPPFLAGS="-I/home/william/gstreamer/Python-3.6.9/install/include"
会遇到
arm-linux-gnueabihf/python3.6m/pyconfig.h: No such file or directory错误。
这个错误,挺难的。
要把刚才Python-3.6.9/install/include下的python3.6m拷贝一份到
/usr/include/arm-linux-gnueabihf/python3.6m!
然后根据google上面说的,要在CPPFLAGS中把-I/usr/include/arm-linux-gnueabihf/python3.6m加上。
所以才有了最终可以编译运行的脚本:
./configure CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --prefix=$(pwd)/install --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf LDFLAGS="-L/home/william/gstreamer/Python-3.6.9/install/lib" CPPFLAGS="-I/home/william/gstreamer/Python-3.6.9/install/include -I/usr/include/arm-linux-gnueabihf/python3.6m"
之后make &make install , install最后可能还有有问题,但没啥关系了。
主要是sudo apt-get source libmount-dev有很多内容,我们只需要libmout.so为目标平台格式的即可。
通过file xxx.so文件可以查看。所以,可以忽略别的错误。
网络上还有说,如果LD的时候遇到错误,那么把刚才编译出来的python3.6软连接到系统中。
sudo ln -s /home/william/gstreamer/Python-3.6.9/install/bin/python3.6 python
本例,没有遇到这个情况
现在可以继续回归到之前glib编译了。
打算直接cp过去。