参考https://whycan.cn/t_1352.html
进入到buildroot根目录下 通过vim .config修改.config文件,文件开头添加
BR2_PACKAGE_CAIRO=y
BR2_PACKAGE_PIXMAN=y
但是在编译根文件系统是出现编译错误
zhang@zhang-virtual-machine:~/buildroot-2017.08.1$ make
Makefile:539: *** fontconfig is in the dependency chain of cairo that has added it to its _DEPENDENCIES variable without selecting it or depending on it from Config.in。 停止。
Makefile:79: recipe for target '_all' failed
make: *** [_all] Error 2
不懂是什么原因.......
离线
打包部分 lib 文件:
cd /disk4/buildroot-2017.08.1/output/host/arm-buildroot-linux-gnueabi/sysroot
tar cvf /mnt/hgfs/E/libcairo.tar ./usr/lib/libcairo* ./usr/lib/engines/lib* ./usr/lib/libpixman-1.* ./usr/lib/libfontconfig.* ./usr/lib/libexpat.* ./usr/lib/libfreetype.* ./usr/lib/libatomic.*
我在进行打包是出现文件缺失,会有影响?
zhang@zhang-virtual-machine:~/buildroot-2017.08.1/output/host/arm-buildroot-linux-gnueabihf/sysroot$ sudo tar cvf /mnt/usb/libcairo.tar ./usr/lib/libcairo* ./usr/lib/engines/lib* ./usr/lib/libpixman-1.* ./usr/lib/libfontconfig.* ./usr/lib/libexpat.* ./usr/lib/libfreetype.* ./usr/lib/libatomic.*
[sudo] zhang 的密码:
./usr/lib/libcairo.la
./usr/lib/libcairo.so
./usr/lib/libcairo.so.2
./usr/lib/libcairo.so.2.11400.8
tar: ./usr/lib/engines/lib*:无法 stat: 没有那个文件或目录
./usr/lib/libpixman-1.la
./usr/lib/libpixman-1.so
./usr/lib/libpixman-1.so.0
./usr/lib/libpixman-1.so.0.34.0
./usr/lib/libfontconfig.la
./usr/lib/libfontconfig.so
./usr/lib/libfontconfig.so.1
./usr/lib/libfontconfig.so.1.9.2
./usr/lib/libexpat.la
./usr/lib/libexpat.so
./usr/lib/libexpat.so.1
./usr/lib/libexpat.so.1.6.4
./usr/lib/libfreetype.la
./usr/lib/libfreetype.so
./usr/lib/libfreetype.so.6
./usr/lib/libfreetype.so.6.14.0
tar: ./usr/lib/libatomic.*:无法 stat: 没有那个文件或目录
tar: 由于前次错误,将以上次的错误状态退出
离线
普通用户不能访问设备文件, 你加 sudo 就不会有这个错误了。
我在打包的时候已经加了sudo了,错误应该是./usr/lib文件下没有engines文件夹和缺失前缀为libatomic.的文件,这样的原因会是buildroot编译错误?
离线
605364021 说:晕哥 说:普通用户不能访问设备文件, 你加 sudo 就不会有这个错误了。
我在打包的时候已经加了sudo了,错误应该是./usr/lib文件下没有engines文件夹和缺失前缀为libatomic.的文件,这样的原因会是buildroot编译错误?
有可能,找一台配置高、干净的电脑重新来一次.
看起来是软连接指向的文件挂了。
.....重新在buildroot根目录下make一次可以?换电脑这个没办法...
离线
可以. dl目录下的压缩文件可以拷过去.
dl目录下的压缩文件?这是什么....
离线
我在buildroot根目录下又make了一次还是./usr/lib文件下没有engines文件夹和缺失前缀为libatomic.,下面是我的编译信息
zhang@zhang-virtual-machine:~/buildroot-2017.08.1$ make
>>> Finalizing target directory
/bin/sed -i -e '/# GENERIC_SERIAL$/s~^.*#~console::respawn:/sbin/getty -L console 0 vt100 #~' /home/zhang/buildroot-2017.08.1/output/target/etc/inittab
/bin/sed -i -e '/^#.*-o remount,rw \/$/s~^#\+~~' /home/zhang/buildroot-2017.08.1/output/target/etc/inittab
mkdir -p /home/zhang/buildroot-2017.08.1/output/target/etc
echo "buildroot" > /home/zhang/buildroot-2017.08.1/output/target/etc/hostname
/bin/sed -i -e '$a \127.0.1.1\tbuildroot' -e '/^127.0.1.1/d' /home/zhang/buildroot-2017.08.1/output/target/etc/hosts
mkdir -p /home/zhang/buildroot-2017.08.1/output/target/etc
echo "Welcome to Buildroot" > /home/zhang/buildroot-2017.08.1/output/target/etc/issue
/bin/sed -i -e s,^root:[^:]*:,root::, /home/zhang/buildroot-2017.08.1/output/target/etc/shadow
rm -f /home/zhang/buildroot-2017.08.1/output/build/locales.nopurge
for i in C en_US locale-archive; do echo $i >> /home/zhang/buildroot-2017.08.1/output/build/locales.nopurge; done
for dir in ; do for langdir in $dir/*; do if [ -e "${langdir}" ]; then grep -qx "${langdir##*/}" /home/zhang/buildroot-2017.08.1/output/build/locales.nopurge || rm -rf $langdir; fi done; done
if [ -d /home/zhang/buildroot-2017.08.1/output/target/usr/share/X11/locale ]; then for lang in C en_US; do if [ -f /home/zhang/buildroot-2017.08.1/output/target/usr/share/X11/locale/$lang/XLC_LOCALE ]; then echo "$lang/XLC_LOCALE: $lang"; fi done > /home/zhang/buildroot-2017.08.1/output/target/usr/share/X11/locale/locale.dir; fi
rm -rf /home/zhang/buildroot-2017.08.1/output/target/usr/include /home/zhang/buildroot-2017.08.1/output/target/usr/share/aclocal \
/home/zhang/buildroot-2017.08.1/output/target/usr/lib/pkgconfig /home/zhang/buildroot-2017.08.1/output/target/usr/share/pkgconfig \
/home/zhang/buildroot-2017.08.1/output/target/usr/lib/cmake /home/zhang/buildroot-2017.08.1/output/target/usr/share/cmake
find /home/zhang/buildroot-2017.08.1/output/target/usr/{lib,share}/ -name '*.cmake' -print0 | xargs -0 rm -f
find /home/zhang/buildroot-2017.08.1/output/target/lib/ /home/zhang/buildroot-2017.08.1/output/target/usr/lib/ /home/zhang/buildroot-2017.08.1/output/target/usr/libexec/ \
\( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f
find: `/home/zhang/buildroot-2017.08.1/output/target/usr/libexec/': 没有那个文件或目录
rm -rf /home/zhang/buildroot-2017.08.1/output/target/usr/share/gdb
rm -rf /home/zhang/buildroot-2017.08.1/output/target/usr/share/bash-completion
rm -rf /home/zhang/buildroot-2017.08.1/output/target/usr/share/zsh
rm -rf /home/zhang/buildroot-2017.08.1/output/target/usr/man /home/zhang/buildroot-2017.08.1/output/target/usr/share/man
rm -rf /home/zhang/buildroot-2017.08.1/output/target/usr/info /home/zhang/buildroot-2017.08.1/output/target/usr/share/info
rm -rf /home/zhang/buildroot-2017.08.1/output/target/usr/doc /home/zhang/buildroot-2017.08.1/output/target/usr/share/doc
rm -rf /home/zhang/buildroot-2017.08.1/output/target/usr/share/gtk-doc
rmdir /home/zhang/buildroot-2017.08.1/output/target/usr/share 2>/dev/null || true
find /home/zhang/buildroot-2017.08.1/output/target -type f \( -perm /111 -o -name '*.so*' \) -not \( -name 'libpthread*.so*' -o -name 'ld-*.so*' -o -name '*.ko' \) -print0 | xargs -0 /home/zhang/buildroot-2017.08.1/output/host/bin/arm-linux-gnueabihf-strip --remove-section=.comment --remove-section=.note 2>/dev/null || true
find /home/zhang/buildroot-2017.08.1/output/target/lib/ -type f -name 'libpthread*.so*' | \
xargs -r /home/zhang/buildroot-2017.08.1/output/host/bin/arm-linux-gnueabihf-strip --remove-section=.comment --remove-section=.note --strip-debug
find /home/zhang/buildroot-2017.08.1/output/target/lib/ -type f -name 'ld-*.so*' | \
xargs -r /home/zhang/buildroot-2017.08.1/output/host/bin/arm-linux-gnueabihf-strip --remove-section=.comment --remove-section=.note --strip-debug
test -f /home/zhang/buildroot-2017.08.1/output/target/etc/ld.so.conf && \
{ echo "ERROR: we shouldn't have a /etc/ld.so.conf file"; exit 1; } || true
test -d /home/zhang/buildroot-2017.08.1/output/target/etc/ld.so.conf.d && \
{ echo "ERROR: we shouldn't have a /etc/ld.so.conf.d directory"; exit 1; } || true
mkdir -p /home/zhang/buildroot-2017.08.1/output/target/etc
( \
echo "NAME=Buildroot"; \
echo "VERSION=2017.08.1"; \
echo "ID=buildroot"; \
echo "VERSION_ID=2017.08.1"; \
echo "PRETTY_NAME=\"Buildroot 2017.08.1\"" \
) > /home/zhang/buildroot-2017.08.1/output/target/etc/os-release
>>> Sanitizing RPATH in target tree
/home/zhang/buildroot-2017.08.1/support/scripts/fix-rpath target
>>> Generating root filesystem image rootfs.tar
rm -f /home/zhang/buildroot-2017.08.1/output/build/_fakeroot.fs
rm -f /home/zhang/buildroot-2017.08.1/output/target/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM
rm -f /home/zhang/buildroot-2017.08.1/output/build/_users_table.txt
echo '#!/bin/sh' > /home/zhang/buildroot-2017.08.1/output/build/_fakeroot.fs
echo "set -e" >> /home/zhang/buildroot-2017.08.1/output/build/_fakeroot.fs
echo "chown -h -R 0:0 /home/zhang/buildroot-2017.08.1/output/target" >> /home/zhang/buildroot-2017.08.1/output/build/_fakeroot.fs
printf ' \n' >> /home/zhang/buildroot-2017.08.1/output/build/_users_table.txt
PATH="/home/zhang/buildroot-2017.08.1/output/host/bin:/home/zhang/buildroot-2017.08.1/output/host/sbin:/home/zhang/bin:/home/zhang/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin" /home/zhang/buildroot-2017.08.1/support/scripts/mkusers /home/zhang/buildroot-2017.08.1/output/build/_users_table.txt /home/zhang/buildroot-2017.08.1/output/target >> /home/zhang/buildroot-2017.08.1/output/build/_fakeroot.fs
cat system/device_table.txt > /home/zhang/buildroot-2017.08.1/output/build/_device_table.txt
printf ' /bin/busybox f 4755 0 0 - - - - -\n /dev/console c 622 0 0 5 1 - - -\n\n' >> /home/zhang/buildroot-2017.08.1/output/build/_device_table.txt
echo "/home/zhang/buildroot-2017.08.1/output/host/bin/makedevs -d /home/zhang/buildroot-2017.08.1/output/build/_device_table.txt /home/zhang/buildroot-2017.08.1/output/target" >> /home/zhang/buildroot-2017.08.1/output/build/_fakeroot.fs
printf ' (cd /home/zhang/buildroot-2017.08.1/output/target; find -print0 | LC_ALL=C sort -z | tar -cf /home/zhang/buildroot-2017.08.1/output/images/rootfs.tar --null --no-recursion -T - --numeric-owner)\n' >> /home/zhang/buildroot-2017.08.1/output/build/_fakeroot.fs
chmod a+x /home/zhang/buildroot-2017.08.1/output/build/_fakeroot.fs
PATH="/home/zhang/buildroot-2017.08.1/output/host/bin:/home/zhang/buildroot-2017.08.1/output/host/sbin:/home/zhang/bin:/home/zhang/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin" /home/zhang/buildroot-2017.08.1/output/host/bin/fakeroot -- /home/zhang/buildroot-2017.08.1/output/build/_fakeroot.fs
rootdir=/home/zhang/buildroot-2017.08.1/output/target
table='/home/zhang/buildroot-2017.08.1/output/build/_device_table.txt'
/usr/bin/install -m 0644 support/misc/target-dir-warning.txt /home/zhang/buildroot-2017.08.1/output/target/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM
编译根文件系统好像是没错误....
离线
编译应用程序:
/disk4/buildroot-2017.08.1/output/host/bin/arm-linux-gcc -o test rectangles.c -lcairo -lts
这个编译指令是在ubuntu上运行的吧,我编译提示缺失tslib.h
zhang@zhang-virtual-machine:/home/share$ arm-linux-gnueabihf-gcc -o test rectangles.c -I/usr/include/cairo -lcairo -lts
rectangles.c:24:19: fatal error: tslib.h: 没有那个文件或目录
compilation terminated.
是需要先移植tslib?http://zero.lichee.pro/%E5%BA%94%E7%94%A8/QT_doc1.html
离线
对,要勾上 tslib
.....什么是勾上tslib,
离线
buildroot 的 .config 文件
我在别人博客上看到make menuconfig后
Target packages --->
Graphic libraries and applications (graphic/text) --->
Qt5 --->
Enable Tslib support
我下的根文件系统不一样..我在QT5下没有tslib选项,应该在哪里勾上tslib?
离线
bulidroot根目录下 vim ./config
增加BR2_PACKAGE_TSLIB=y
make menuconfig
make
是样子勾选?
离线