c - 为 ARM 发布交叉编译 apr-1.5.2

标签 c linux cross-compiling autotools apr

我正在尝试为 ARM 平台交叉编译 Apache 可移植运行时库 APR-1.5.2 库。我正在按照以下步骤操作。

./configure --host=aarch64-unknown-linux-gnu CC=aarch64-unknown-linux-gnu-gcc
make 

我在 configure 和 make 中没有收到任何错误,但是当我尝试将它链接到我的代码时,我收到了链接错误。

#include <iostream>
#include <stdio.h>
using namespace std;

#include "apr_general.h"
#include "apr_network_io.h"
#include "apr_strings.h"

int main(){
    apr_initialize();
    std::cout<<"Welcome Program compiling  "<<std::endl;
    return 0;
}

当我使用交叉编译器编译代码时出现错误。

aarch64-unknown-linux-gnu-g++ -o Test -I ../../../../Static_APR/apr-1.5.2/include DAS.cpp ../../../../Static_APR/apr-1.5.2/.libs/libapr-1.a -lpthread

**apr-1.5.2/.libs/libapr-1.a(start.o): Relocations in generic ELF (EM: 62)**

使用 g++ 可以很好地编译代码。

g++ -o Test -I ../../../../Static_APR/apr-1.5.2/include DAS.cpp ../../../../Static_APR/apr-1.5.2/.libs/libapr-1.a -lpthread

即使我使用了 CC=aarch64-unknown-linux-gnu-gcc,为什么 APR lib 没有为 arm(交叉编译器)构建

任何人都可以帮助我以正确的方式为交叉编译构建 APR 吗?

最佳答案

I am following below steps.

./configure --host=aarch64-unknown-linux-gnu CC=aarch64-unknown-linux-gnu-gcc
make

您的 ./configure 应该包含一个 --build--host 是您正在编译的机器。另见 How To Configure for Android?在 Autoconf 邮件列表上。也许是这样的:

export CPP=aarch64-unknown-linux-gnu-cpp
export CC=aarch64-unknown-linux-gnu-gcc
export CXX=aarch64-unknown-linux-gnu-g++
export LD=aarch64-unknown-linux-gnu-ld
export AR=aarch64-unknown-linux-gnu-ar
export AS=aarch64-unknown-linux-gnu-as
export RANLIB=aarch64-unknown-linux-gnu-ranlib

export CFLAGS="..."
export CXXFLAGS="..."

./configure --build=`config.guess` --host=aarch64-unknown-linux-gnu 

上面的代码片段应该确保所有工具都可用。您可能需要在适当的 header 位置添加 CFLAGSCXXFLAGS;和具有适当库位置的 LDFLAGS

您应该验证RANLIB 的程序。它可能不是你想的那样。例如,在一个版本的 Ubuntu for ARM 上它是:

export RANLIB=aarch64-unknown-linux-gcc-ranlib-4.7

你可能需要找到config.guess:

$ find /usr -name 'config.guess'
/usr/lib/rpm/redhat/config.guess
/usr/share/automake-1.15/config.guess
...

最后,您可能会发现这些脚本很有用。他们通过设置路径和设置工具来帮助构建另一个库:setenv-android.shsetenv-embedded.sh .

关于c - 为 ARM 发布交叉编译 apr-1.5.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44688195/

相关文章:

qt - 为树莓派构建 Qt 库时出错

将 char 转换为 LPCWSTR

c - 如何在 printf 中表示变量类型 unsigned long

linux - 微秒级用户空间忙等待循环

c - 在主机上为具有库的目标开发 Paho-Mqtt-C 应用程序

linux - 构建 cf-cli : go build runtime: linux/386 must be bootstrapped using make. bash 时出错

c - 当我运行代码时,出现段错误,但是当调试器运行它时,它说没有问题

c - 如何使用 UDP 广播消息知道远程主机的 IP 地址?

检查 C 库的版本(动态加载)

c - 此错误消息从何而来?