2010-04-19 82 views
1

我的程序很好地編譯爲Android,但是當我試圖把它複製到Android模擬器靜態鏈接,它提供了以下錯誤:安卓:對的libstdC++

[email protected] /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 

這裏是我建我的應用程序:

[email protected] /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++靜態或將應用程序鏈接到模擬器中正確的動態庫?

在此先感謝。

回答

0

有對ndk的修改,支持異常,RTTI和stdlibC++。

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

另一種方法涉及移植只是你需要什麼,用手...週刊!

+0

感謝您的回答,但我已經在過去的一年中找到了答案。 ;)Crystax是答案,但它自身有問題。這是後面的一個版本(官方NDK在r5,Crystax在r4)並且沒有很好的文檔記錄。 – knight666 2011-03-17 07:52:13

+0

糟糕! :P無論如何,很高興知道:) – 2011-03-17 12:48:02