首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >arm-linux-androideabi/bin/ld:致命错误:-soname:必须采用非空参数

arm-linux-androideabi/bin/ld:致命错误:-soname:必须采用非空参数
EN

Stack Overflow用户
提问于 2014-11-10 10:28:03
回答 1查看 1.8K关注 0票数 1

我正在交叉编译gdcm与cmake,它一直到编译结束,但最后我得到了以下错误。在编译库时,如何在cmake或cmake中设置-soname,以避免出现以下错误。

代码语言:javascript
复制
/opt/android/android-ndk-r10c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-    androideabi/bin/ld: fatal error: -soname: must take a non-empty argument
collect2: error: ld returned 1 exit status
make[2]: *** [/home/likewise-open/SLKTECHLABS/kirtan.patel/Desktop/GDCM/GDCMSource/libs/armeabi-v7a/libgdcmjni.so] Error 1
make[1]: *** [Wrapping/Java/CMakeFiles/gdcmjni.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
/home/kirtan.patel/Desktop/GDCM/GDCMSource/Source/MediaStorageAndFileFormat/gdcmImageWriter.h:36: Warning 822: Covariant return     types not supported in Java. Proxy method will return gdcm::Pixmap const &.
/home/kirtan.patel/Desktop/GDCM/GDCMSource/Source/MediaStorageAndFileFormat/gdcmImageCodec.h:45: Warning 473: Returning a     pointer or reference in a director method is not recommended.
EN

回答 1

Stack Overflow用户

发布于 2015-09-04 13:36:56

正如罗曼斯基所指出的那样,CMake 3.2和3.0版本由于UseSWIG.cmake文件的不同而具有不同的行为。在3.2 NO_SONAME property 已启用 by 默认设置中,它似乎引发了android中的冲突,产生了无效的带有空TARGET_SONAME的链接选项-Wl,-soname,

有两种方法可以修复3.2版本的构建

  1. string(REPLACE "<CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG><TARGET_SONAME>" "" CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE}")完全消除了断续链接选项
  2. set_target_properties(${MY_TARGET} PROPERTIES NO_SONAME OFF)修复断裂链接选项与正确的so-名称.
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26841603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档