在aarch64平台编译依赖pqxx库和iconv库的c++程序的办法

前文提到,编译源代码安装libiconv-1.18的步骤方法,但在aarch64平台编译时,报如下错误:

./configure --prefix=/usr/local
./configure: This script requires a shell more modern than all
./configure: the shells that I found on your system.

如果编译不成功,还可以用apt install安装,
如果这两样都不行,还可以上网下载安装包或二进制包。
常见的网站有https://archlinuxarm.org/和https://pkgs.org/,只要按软件包名搜索,然后找到适合自己平台的包下载即可。

wget http://mirror.archlinuxarm.org/aarch64/extra/libiconv-1.18-1-aarch64.pkg.tar.xz
mkdir libiconv
tar xf ../libiconv-1.18-1-aarch64.pkg.tar.xz
export LIBRARY_PATH=/par/:/par/libiconv/usr/lib

不过要注意下载包对系统c库的版本要求不同,我从https://archlinuxarm.org/packages/aarch64/libpqxx下载的
https://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/aarch64/extra/libpqxx-7.9.2-1-aarch64.pkg.tar.xz就存在依赖GLIBC_2.38的问题。
而从https://altlinux.pkgs.org/sisyphus/classic-aarch64/libpqxx-devel-7.10.1-alt1.aarch64.rpm.html下载的rpm包就不存在这个问题。
注意rpm包要下载两个,包括库本身和devel开发支持包,如果手工解压,需要把两个都解压缩到同一个目录才能生效。
http://mirror.yandex.ru/altlinux/Sisyphus/aarch64/RPMS.classic/libpqxx-7.10.1-alt1.aarch64.rpm
http://mirror.yandex.ru/altlinux/Sisyphus/aarch64/RPMS.classic/libpqxx-devel-7.10.1-alt1.aarch64.rpm
如下所示

ls /par/libpqxx/usr/lib
libpqxx-7.10.so  libpqxx.so

头文件一般位于软件包和lib目录同级的include目录內,也可以放在统一的地方,如/par/include,这样就不用写多个-I 参数了。
最后,设置环境变量,编译链接执行成功。

export LIBRARY_PATH=/par/:/par/libiconv/usr/lib:/par/libpqxx/usr/lib
export LD_LIBRARY_PATH=/par/:/par/libiconv/usr/lib:/par/libpqxx/usr/lib


g++ -std=c++17 -o duckcmd7 csv_reader2.cpp duckcmd.cpp -lduckdb -liconv -lpqxx -lpq -lgmp -I /par/include
./duckcmd7
DuckDB GMP Shell (enter 'exit;' to quit, 'read file.sql' to execute script)
Type 'timi on/off' to enable/disable timing
=============================================
duckdb> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值