Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Android:静态链接到libstdc++;_C++_Android_Linux_Android Ndk - Fatal编程技术网

C++ Android:静态链接到libstdc++;

C++ Android:静态链接到libstdc++;,c++,android,linux,android-ndk,C++,Android,Linux,Android Ndk,我的程序可以很好地为Android编译,但是当我尝试将其复制到Android emulator时,会出现以下错误: 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 librar

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

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++

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

是否有方法静态链接到stdlibc++或将应用程序链接到emulator中正确的动态库


提前感谢。

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


另一种选择是手工移植您需要的东西。。。哎呀

谢谢你的回答,但我在过去的一年里已经弄明白了Crystax是答案,但它本身也有问题。这是后面的一个版本(官方的NDK在r5,Crystax在r4),并且没有很好的文档记录。