平台:RV1126
系统:buildroot
交叉编译了一个名为astrometry.net的工程,这个工程依赖C库和Python
1.错误尝试,但是设置依赖库可以参考这个方式
测试在Ubuntu中源码编译需要依赖下面的库
sudo apt-get install libbz2-dev
sudo apt-get install libcfitsio-dev
sudo apt-get install libjpeg-dev
其中bz2和jpeg在buildroot中已经存在,libcfitsio没有,需要手动添加
在Buildroot的package/目录下创建一个新目录,比如package/libcfitsio/,在其中创建一个Config.in文件,内容如下:
config BR2_PACKAGE_LIBCFITSIO
bool "libcfitsio"
depends on BR2_INSTALL_LIBSTDCPP
help
Library for manipulating FITS files.
comment "libcfitsio needs a toolchain w/ C++, threads"
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
这个配置文件描述了libcfitsio的Buildroot包,指定了它的依赖关系和简短的帮助信息。
在Buildroot中添加libcfitsio的构建文件:
在package/libcfitsio/目录中创建一个libcfitsio.mk文件,内容如下:
LIBCFITSIO_VERSION = 3.47
LIBCFITSIO_SOURCE = libcfitsio-$(LIBCFITSIO_VERSION).tar.gz
LIBCFITSIO_SITE = https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c
$(eval $(autotools-package))
在package下的Config.in中添加包含libcfitsio的Config.in
在Buildroot的主目录中运行以下命令:
make ARCH=arm rockchip_rv1126_rv1109_defconfig
make menuconfig
在菜单中找到并选择 Target packages -> Libraries -> libcfitsio。
选择后make savedefconfig
在SDK根目录运行
./build.sh rootfs
Buildroot将会自动下载libcfitsio的源代码,构建并将其包含到生成的根文件系统中。
同样的在~/workspace/RV1126SDK/buildroot/package/astrometry下增加
config BR2_PACKAGE_ASTROMETRY
bool "astrometry"
help
This is a demo to add local app.
astrometry.mk
################################################################################
#
# ASTROMETRY
#
################################################################################
ASTROMETRY_VERSION:= 1.0.0
ASTROMETRY_SITE:= $(TOPDIR)/../app/astrometry
ASTROMETRY_SITE_METHOD:=local
ASTROMETRY_INSTALL_TARGET:=YES
define ASTROMETRY_BUILD_CMDS
$(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" -C $(@D) all
endef
define ASTROMETRY_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 0755 $(@D)/astrometry $(TARGET_DIR)/bin
endef
define ASTROMETRY_PERMISSIONS
/bin/astrometry f 4755 0 0 - - - - -
endef
$(eval $(generic-package))
将astrometry源码放到~/workspace/RV1126SDK/app/下
在package下的Config.in中添加包含astrometry的Config.in
在Buildroot的主目录中运行以下命令:
make ARCH=arm rockchip_rv1126_rv1109_defconfig
make menuconfig
在菜单中找到并选择 Target packages -> Libraries -> astrometry
选择后make savedefconfig
在SDK根目录运行
./build.sh rootfs
编译报错
报错是因为astrometry.net所依赖的环境不对,如果全部往buildroot的框架里配置astrometry.net的环境会很复杂,而且有可能会把原来的正常的系统给配置坏
2、脱离rockchip SDK的buildroot框架,手动交叉编译测试(测试成功)
在网上查找交叉编译astrometry.net的资料,信息很少
关于交叉编译astrometry.net的内容
https://groups.google.com/g/astrometry/c/2jf-d4j_MBM
尝试不在buildroot框架里编译,直接交叉编译工程,然后移植到系统里
在~/workspace/astrometry.net-0.93/Makefile里找到一些关于CC的信息
通过export来设置CC,
export $(CC),可以看到设置成了交叉编译工具链
declare -x CC="arm-linux-gnueabihf-gcc"
在gsl-an下执行
CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld ./configure --enable-shared=no --prefix=$(pwd)/stage --host=arm-linux-gnueabihf
直接make编译
hya@ubuntu:~/workspace/astrometry.net-0.93$ make
make -C gsl-an
make[1]: 进入目录“/home/hya/workspace/astrometry.net-0.93/gsl-an”
arm-linux-gnueabihf-gcc -g -Wall -ffinite-math-only -fno-signaling-nans -pthread -m64 -O3 -fomit-frame-pointer -DNDEBUG -fpic -fPIC -Winline -I../include -I../include/astrometry -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -DAN_GIT_REVISION='"0.93"' -DAN_GIT_DATE='"Mon_Dec_19_16:41:15_2022_-0500"' -DAN_GIT_URL='"https://github.com/dstndstn/astrometry.net"' -I. -c -o blas/blas.o blas/blas.c
arm-linux-gnueabihf-gcc: 错误: unrecognized command line option ‘-m64’
<内置>: recipe for target 'blas/blas.o' failed
make[1]: *** [blas/blas.o] Error 1
make[1]: 离开目录“/home/hya/workspace/astrometry.net-0.93/gsl-an”
Makefile:92: recipe for target 'gsl-an' failed
make: *** [gsl-an] Error 2
打印报错有 -m64的选项,这个是arm64架构的编译信息,但是查找Makefile没有找到 -m64的信息&#x