gpt4 book ai didi

c++ - Android:静态链接到 libstdc++

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:08 24 4
gpt4 key购买 nike

我的程序可以很好地为 Android 编译,但是当我尝试将它复制到 Android 模拟器时,它会出现以下错误:

knight666@Katja-Linux /media/Data/Shared/Galaxians $ acpy Galaxians.android
Filename: 'Galaxians.android'
819 KB/s (420657 bytes in 0.501s)
link_image[1638]: 825 could not load needed library 'libstdc++.so.6' for '/system/sbin/Galaxians.android' (load_library[984]: Library 'libstdc++.so.6' not found)CANNOT LINK EXECUTABLE

acpy 是我编写的一个小脚本,它执行以下操作:

#!/bin/sh

FILEPATH=`dirname $1`
FILENAME=`basename $1 .c`

echo "Filename: '$FILENAME'"

adb push $FILEPATH/$FILENAME /system/sbin/$FILENAME
adb shell chmod 777 /system/sbin/$FILENAME
adb shell /system/sbin/$FILENAME

以下是我构建应用程序的方式:

oem@androiddev /media/YoghurtGum/Tests/Galaxians $ sudo make
arm-none-linux-gnueabi-g++ -static-libgcc -g -Wall -Werror -O2 -w -I ../../YoghurtGum/src/GLES -I ../../YoghurtGum/src -c src/Alien.cpp -o intermediate/Alien.o
arm-none-linux-gnueabi-g++ -static-libgcc -g -Wall -Werror -O2 -w -I ../../YoghurtGum/src/GLES -I ../../YoghurtGum/src -c src/Bullet.cpp -o intermediate/Bullet.o
arm-none-linux-gnueabi-g++ -static-libgcc -g -Wall -Werror -O2 -w -I ../../YoghurtGum/src/GLES -I ../../YoghurtGum/src -c src/Game.cpp -o intermediate/Game.o
arm-none-linux-gnueabi-g++ -static-libgcc -g -Wall -Werror -O2 -w -I ../../YoghurtGum/src/GLES -I ../../YoghurtGum/src -c src/Player.cpp -o intermediate/Player.o

arm-none-linux-gnueabi-gcc
-Wl,--entry=main,
-dynamic-linker=/system/bin/linker,
-rpath-link=/home/oem/android-ndk-r3/build/platforms/android-5/arch-arm/usr/lib,
-rpath=../../YoghurtGum/lib/Android,
-L/home/oem/android-ndk-r3/build/platforms/android-5/arch-arm/usr/lib
-nostdlib
-lstdc++
intermediate/Alien.o
intermediate/Bullet.o
intermediate/Game.o
intermediate/Player.o
../../YoghurtGum/lib/Android/libstdc++.a
../../YoghurtGum/bin/YoghurtGum.a
-o bin/Galaxians.android

换行符只是为了清楚起见,实际输出中不存在。

YoghurtGum 是我的游戏库,它已经静态和动态地链接到 libstdc++

当我删除 lstd​​c++ 时,程序无法编译,因为它找不到库。

有没有办法静态链接到 stdlibc++ 或将应用程序链接到模拟器中正确的动态库?

提前致谢。

最佳答案

对 ndk 进行了修改,支持异常、RTTI 和 stdlibc++。

http://www.crystax.net/android/ndk-r3.php

另一种方法是手动移植您需要的东西……哎呀!

关于c++ - Android:静态链接到 libstdc++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2670458/

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