当前位置: 首页 > news >正文

给交叉工具链增加libelf.so

一、背景

最近在x86_64环境下使用交叉工具编译链编译arm64程序时,出现报错,缺少elf库,导致编译失败。因此记录下增加libelf.so过程。

CC=aarch64-linux-gnu-gcc make...
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: 找不到 -lelf: 没有那个文件或目录
...

二、源码编译

2.1 系统环境

Ubuntu 22.04.5 LTS

2.2 安装交叉工具链

sudo apt install gcc-aarch64-linux-gnu

2.3 安装依赖libz.so

  • 源码下载
wget https://www.zlib.net/zlib-1.3.1.tar.gz -O zlib-1.3.1.tar.gz
  • 解压
tar xf zlib-1.3.1.tar.gz
  • 编译安装
cd zlib-1.3.1
cmake . -DCMAKE_INSTALL_PREFIX=/usr/aarch64-linux-gnu -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc
make
sudo make install

2.4 安装依赖libzstd.so

  • 源码下载
wget https://github.com/facebook/zstd/archive/refs/tags/v1.5.7.tar.gz -O zstd-1.5.7.tar.gz
  • 解压
tar xf zstd-1.5.7.tar.gz
  • 编译安装
cd zstd-1.5.7
make aarch64build
sudo PREFIX=/usr/aarch64-linux-gnu make install

2.5 安装libelf.so

  • 源码下载
wget https://github.com/arachsys/libelf/archive/refs/tags/v0.193.tar.gz -O libelf-0.193.tar.gz
  • 解压
tar xf libelf-0.193.tar.gz
  • 编译安装
cd libelf-0.193
CC=aarch64-linux-gnu-gcc make
sudo DESTDIR=/usr/aarch64-linux-gnu make install

三、编译过程中的问题

  • elf依赖zstd
aarch64-linux-gnu-gcc -O2 -Wall -DHAVE_CONFIG_H -Iinclude -Isrc -c -o src/elf_compress.o src/elf_compress.c
src/elf_compress.c:44:10: fatal error: zstd.h: 没有那个文件或目录44 | #include <zstd.h>|          ^~~~~~~~
compilation terminated.
make: *** [Makefile:31:src/elf_compress.o] 错误 1
  • elf依赖zlib
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: 找不到 -lz: 没有那个文件或目录
collect2: error: ld returned 1 exit status
make: *** [Makefile:27:libelf.so] 错误 1
http://www.lqws.cn/news/470899.html

相关文章:

  • PowerShell读取CSV并遍历组数组
  • 在 `setup` 函数中实现路由跳转:Vue3与Vue Router 4的集成
  • 《Whisper模型版本及下载链接》
  • 网络钓鱼攻击
  • 【论文笔记】【强化微调】T-GRPO:对视频数据进行强化微调
  • [muduo] TcpConnection | 回调交互
  • LLM-201: OpenHands与LLM交互链路分析
  • Linux致命漏洞CVE-2025-6018和CVE-2025-6019
  • 1、自然语言处理任务全流程
  • 什么是redission看门狗机制
  • Redis 分布式锁、红锁分别是什么?红锁有什么问题?
  • Python漂浮的爱心
  • 【Ambari3.0.0 部署】Step2—免密登陆认证-适用于el8
  • 智能机器人后期会如何发展?
  • 【烧脑算法】枚举:有序穷举,分步排查
  • 植物神经小知识
  • 教育培训APP源码核心功能开发详解:直播、考试、组卷系统全拆解
  • 力扣1546. 和为目标值且不重叠的非空子数组的最大数目
  • 1. 常见K线组合
  • 【STM32笔记】F1F4 STM32初识、MDK调试、HAL简介
  • 3.10 坐标导航
  • C++ 函数模板
  • 【基础算法】贪心 (一) :简单贪心
  • JavaWeb后端部分
  • win2003_ddk.3790里面有windbg--6.1.0017.2----备忘
  • 【环境配置】在Ubuntu Server上安装5090 PyTorch环境
  • Python 正确重载运算符(增量赋值运算符)
  • C++重点知识详解(命名空间,缺省参数,函数重载)
  • 【舞蹈】编排:如何对齐拍子并让小节倍数随BPM递减
  • 两个python独立进程通信