LibreDWG开源库生成ARM64架构下的动态库

本篇文章主要介绍了使用LibreDWG开源库生成ARM64架构下的动态库,并将这个动态库单独复制出来,进行程序构建。然后讲了一个我工程中用到的案例,dwg2dxf文件的转换,并打包成一个新的动态库给安卓端使用,话不多说直接开始:

如果不使用ARM架构,按照官方的文档来即可,跳过1、3、4,并且5中的第二步输入./configure就行

1.先安装ARM64 交叉编译工具链

sudo apt update
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

2.再下载LibreDWG官方库,并进入到libredwg文件夹中

git clone https://git.savannah.gnu.org/git/libredwg.git
cd libredwg

3.创建一个交叉编译工具链文件。例如,创建一个名为 aarch64-toolchain.cmake 的文件,并加入以下内容:

# aarch64-toolchain.cmake
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR aarch64)

# specify the cross compiler
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)

 4.LibreDWG 的 configure 脚本可能没有直接支持交叉编译的选项。在这种情况下,你需要修改环境变量以指定交叉编译工具链,在命令行输入:

export CC=aarch64-linux-gnu-gcc
export CXX=aarch64-linux-gnu-g++

 5.紧接着在命令行输入:

sh ./autogen.sh
./configure --host=aarch64-linux-gnu
make
make check
sudo make install

./configure --host=aarch64-linux-gnu  

这个选项是用于交叉编译的,它指定了目标架构为 ARM64(aarch64)。这个选项并不是 LibreDWG 文档中明确说明的,但它是常见的交叉编译配置方法。

6.进入路径/usr/local/lib下寻找libredwg.so.0.0.13(2024/08/16,或许更新后不一定是0.0.13,看具体情况选择),该目录下还有libredwg.solibredwg.so.0,不用管是一个链接之类的。将其拷贝到你的工作目录的lib下,并改名为libredwg.so.0(注意和前一个不是同一个文件)如图:

以上内容就是生成LibreDWG开源库ARM64架构下的动态库的过程了,接下来的内容为使用LibreDWG的库,是一个小小的案例,主要实现了dwg2dxf文件的转换

首先我们先使用正常的流程,不要构建ARM框架的库
7.接下来回到libredwg文件夹下,进入programs文件夹下,选择你要用的功能,这里我使用了dwg2dxf.c这个功能,将这个文件拷贝到我们的工作目录src文件夹下,阅读其中的代码内容,去掉不必要的部分,可以使用GPT。如图:


8.紧接着就是我们常用的CMakeLists编程了,这里省略过程,写一个main.c函数,以下部分为我实际工作中的案例:
调用dwg2dxf.c文件里的函数

int dwg_to_dxf(const char *filename_in, int minimal, int binary, int overwrite);


 main.c中的内容


9.然后就是用CMakeLists进行编译,这个时候会提示缺少很多的头文件或者其他文件,这些文件我们在libredwg文件下进行搜索,找到后拷贝到我们工程中相应的文件夹下,我这里是include文件夹

10.最后再一次编译生成了可执行程序,运行该程序,执行成功

 11.至于安卓端的交叉编译,可以参考我的另一篇博客
Ubuntu C++(Cmake版) X86 -> ARM64 Dockcorss 交叉编译使用过程_arm编译c++-CSDN博客

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值