gpt4 book ai didi

android - 使用 Android 工具链与 autoconf 交叉编译

转载 作者:行者123 更新时间:2023-11-30 00:18:57 26 4
gpt4 key购买 nike

目标 交叉编译Cisco libsrtp对于使用 NDK 工具链的 Android 并使用 libsrtp.a 静态链接到我自己的库。

设置:我使用以下文件

<setup.sh>
export CROSS_SYSROOT=/home/psurana/aa/sysroot
export CROSS_COMPILE=aarch64-linux-android-
export SYSROOT=/home/psurana/aa/sysroot
export CC="${CROSS_COMPILE}gcc --sysroot=${SYSROOT}"
export CXX="${CROSS_COMPILE}gxx --sysroot=${SYSROOT}"
PATH=/home/psurana/aa/bin:$PATH

然后我进行以下配置:

source setup.sh && ./configure --host=aarch64-linux-android --build=`./config.guess` && make -j

这是为我编译的。执行 readelf -h libsrtp.a,产生--

File: libsrtp.a(ut_sim.o)
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: REL (Relocatable file)
Machine: AArch64
Version: 0x1
Entry point address: 0x0
Start of program headers: 0 (bytes into file)
Start of section headers: 1480 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 0 (bytes)
Number of program headers: 0
Size of section headers: 64 (bytes)
Number of section headers: 10
Section header string table index: 7

到目前为止一切顺利。

问题

但是,当我将 libsrtp.a 作为预建静态库链接时,出现以下错误:

./srtp/libsrtp.a(rand_source.o): In function `rand_source_init':

err.c:(.text+0x0): undefined reference to `stdout'
err.c:(.text+0xc): undefined reference to `stdout'

和,

rand_source.c:(.text+0x28): undefined reference to `stderr'
rand_source.c:(.text+0x3c): undefined reference to `stderr'

我的理解是Android的libc中没有stderr,那么libsrtp是怎么得到的呢?

我之前使用类似的东西构建了相同的库,我知道它可以构建。我不知道可能是什么错误。

最佳答案

我通常会在 21 之后在任何平台上使用 libc 获得这个 undefined reference ,所以我通常将 -D__ANDROID_API__=21 添加到 CFLAGS 并最终修复它。我认为问题出在较新的 ndk 版本中的新统一 header 。

关于android - 使用 Android 工具链与 autoconf 交叉编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46678795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com