ARM等效于--不包括LIB ALL”字样;

ARM等效于--不包括LIB ALL”字样;,arm,options,ld,Arm,Options,Ld,在ARM平台上是否有一个选项提供了与--排除libs ALL等效的功能 我试图在Android上减小共享对象的大小,但只有x86上才提供--exclude libs ALL 编辑:以下是我提问的原因。对不起,这个额外的细节。我试图把问题简短地说出来。我的共享对象不导出任何加密++符号,但88显示时有或没有——排除libs ALL 以下是我们感兴趣的环境: $ echo $CXX arm-linux-androideabi-g++ $ echo $ANDROID_STL_INC /opt/and

在ARM平台上是否有一个选项提供了与
--排除libs ALL
等效的功能

我试图在Android上减小共享对象的大小,但只有x86上才提供
--exclude libs ALL


编辑:以下是我提问的原因。对不起,这个额外的细节。我试图把问题简短地说出来。我的共享对象不导出任何加密++符号,但88显示时有或没有
——排除libs ALL

以下是我们感兴趣的环境:

$ echo $CXX
arm-linux-androideabi-g++
$ echo $ANDROID_STL_INC
/opt/android-ndk-r9/sources/cxx-stl/stlport/stlport/
$ echo $ANDROID_SYSROOT
/opt/android-ndk-r9/platforms/android-9/arch-arm
首先,在不使用
的情况下构建我的共享对象--exclude libs ALL

$ $CXX -fPIC -Os -I/usr/local/cryptopp-android-9/include -I$ANDROID_STL_INC
    --sysroot=$ANDROID_SYSROOT com_deltoid_androidprng_PRNG.cpp
    -o libprng.so -shared
$ $CXX -fPIC -Os -I/usr/local/cryptopp-android-9/include -I$ANDROID_STL_INC
    --sysroot=$ANDROID_SYSROOT com_deltoid_androidprng_PRNG.cpp
    -o libprng.so -shared -Wl,--exclude-libs,ALL
然后计算Crypto++导出的数量:

$ arm-linux-androideabi-nm --defined-only libprng.so | grep -i cryptopp | wc -l
      88
$ arm-linux-androideabi-nm --defined-only libprng.so | grep -i cryptopp | wc -l
      88
其次,对
进行相同的实验——排除libs ALL

$ $CXX -fPIC -Os -I/usr/local/cryptopp-android-9/include -I$ANDROID_STL_INC
    --sysroot=$ANDROID_SYSROOT com_deltoid_androidprng_PRNG.cpp
    -o libprng.so -shared
$ $CXX -fPIC -Os -I/usr/local/cryptopp-android-9/include -I$ANDROID_STL_INC
    --sysroot=$ANDROID_SYSROOT com_deltoid_androidprng_PRNG.cpp
    -o libprng.so -shared -Wl,--exclude-libs,ALL
然后计算Crypto++导出的数量:

$ arm-linux-androideabi-nm --defined-only libprng.so | grep -i cryptopp | wc -l
      88
$ arm-linux-androideabi-nm --defined-only libprng.so | grep -i cryptopp | wc -l
      88
在这两种情况下,将导出88个Crypto++符号。源文件如下所示,它不导出任何Crypto++符号


#包括
#包括
#包括
使用CryptoPP::AutoSeedRandomPool;
#包括“三角肌和三角肌”
静态autoseedrandompool&GetPRNG()
{
静态自动进料器和OMPOOL prng;
返回prng;
}
静态int合并传感器()
{
返回0;
}
/*
*类别:三角肌和三角肌
*方法:加密PP_种子
*签字:([B)I
*/
jint JNICALL Java_com_deltoid_andridprng_PRNG_CryptoPP_1
(JNIEnv*env、jclass、jbyteArray seed)
{
int ret,消耗=0;
尝试
{
autoseedrandompool&prng=GetPRNG();
如果(环境)
{   
jbyte*bytes=env->GetByteArrayElements(种子,0);
jint length=env->GetArrayLength(种子);
如果(字节)
{
如果(长度>=0)
{
prng.合并熵((常量字节*)字节,(大小)长度);
消耗+=长度;
}
env->ReleaseByteArrayElements(种子、字节、JNI\u中止);
}                   
}        
}
catch(const CryptoPP::异常和异常)
{
}
消费回报;
}
/*
*类别:三角肌和三角肌
*方法:CryptoPP_GetBytes
*签字:([B)I
*/
JNIEXPORT jint JNICALL Java\u com\u deltoid\u androidprng\u CryptoPP\u 1GetBytes
(JNIEnv*,jclass,jbyteArray)
{    
}
我很确定
--exclude libs
受Android/ARM版本的
ld
支持,因为他们使用它

您是否在您的
Android.mk
文件中尝试了以下内容

LOCAL_LDFLAGS += -Wl,--exclude-libs,ALL

它不被识别或不起作用吗?@auselen-它似乎不起作用。@不象那样-是的,我读过。但它在实践中似乎不起作用(或者它只适用于i386).
exclude libs
对您自己的代码中定义的符号没有任何影响。看起来您只有标题库,这些标题被编译到您的对象中,并且从链接器的角度看与您的代码无法区分。请注意,通过--exclude libs隐藏的符号。这。谢谢@auselen。我添加了其他详细信息源代码和编译器/链接器调用。对于额外的细节,我很抱歉。我试图让问题简短。(我不得不放弃Eclipse和Android.mk。我无法让其中任何一个正常工作。所以我回到了命令行,我知道它一直在工作)。