CMake交叉编译生成无效的链接器选项
CMake cross-compiling generate invalid linker options
我使用CMake在Linux和Windows中使用特定的工具链(nios2-Linux-gnu-g++.exe(Sourcery CodeBench Lite 2013.05-43)4.7.3)进行编译。
从CMake到链接器生成的选项"-Wl,-out implib,myapp.dll.a"answers"-Wl,--主映像版本,0,--次映像版本,零"对编译器无效。
编译器错误:
- nios2 linux gnu/bin/ld.exe:无法识别的选项"--out implib"
- nios2 linux gnu/bin/ld.exe:无法识别的选项"--主映像版本"
- nios2 linux gnu/bin/ld.exe:无法识别的选项"--次要映像版本"
CMakeCache.txt:
# This is the CMakeCache file.
# For build in directory: t:/
# It was generated by CMake: C:/Program Files (x86)/CMake 2.8/bin/cmake.exe
# You can edit this file to change values found and used by cmake.
# If you do not want to change any of the values, simply exit the editor.
# If you do want to change a value, simply edit, save, and exit the editor.
# The syntax for the file is as follows:
# KEY:TYPE=VALUE
# KEY is the name of a variable in the cache.
# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
# VALUE is the current value for the KEY.
########################
# EXTERNAL cache entries
########################
Boost_ATOMICS_LIBRARY_DEBUG:FILEPATH=boost_atomic-gcc-mt-s-1_55
Boost_ATOMICS_LIBRARY_RELEASE:FILEPATH=boost_atomic-gcc-mt-s-1_55
Boost_CHRONO_LIBRARY_DEBUG:FILEPATH=boost_chrono-gcc-mt-s-1_55
Boost_CHRONO_LIBRARY_RELEASE:FILEPATH=boost_chrono-gcc-mt-s-1_55
Boost_DIR:PATH=Boost_DIR-NOTFOUND
Boost_INCLUDE_DIR:PATH=C:/boost_1_55_0
Boost_LIBRARY_DIR:PATH=C:boost_1_55_0stagelib
Boost_SYSTEM_LIBRARY_DEBUG:FILEPATH=boost_system-gcc-mt-s-1_55
Boost_SYSTEM_LIBRARY_RELEASE:FILEPATH=boost_system-gcc-mt-s-1_55
Boost_THREAD_LIBRARY_DEBUG:FILEPATH=boost_thread_pthread-gcc-mt-s-1_55
Boost_THREAD_LIBRARY_RELEASE:FILEPATH=boost_thread_pthread-gcc-mt-s-1_55
CMAKE_AR:FILEPATH=C:/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_Nios_II_GNU_Linux/bin/nios2-linux-gnu-ar.exe
CMAKE_BUILD_TYPE:STRING=MinSizeRel
CMAKE_COLOR_MAKEFILE:BOOL=ON
CMAKE_CXX_COMPILER:FILEPATH=C:/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_Nios_II_GNU_Linux/bin/nios2-linux-gnu-g++.exe
CMAKE_CXX_FLAGS:STRING=-c
CMAKE_CXX_FLAGS_DEBUG:STRING=-g
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
CMAKE_C_COMPILER:FILEPATH=C:/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_Nios_II_GNU_Linux/bin/nios2-linux-gnu-gcc.exe
CMAKE_C_FLAGS:STRING=-c
CMAKE_C_FLAGS_DEBUG:STRING=-g
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
CMAKE_ECLIPSE_EXECUTABLE:FILEPATH=CMAKE_ECLIPSE_EXECUTABLE-NOTFOUND
CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES:BOOL=ON
CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT:BOOL=OFF
CMAKE_ECLIPSE_MAKE_ARGUMENTS:STRING=
CMAKE_ECLIPSE_VERSION:STRING=3.6 (Helios)
CMAKE_EXE_LINKER_FLAGS:STRING=' -static '
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/safes
CMAKE_LINKER:FILEPATH=C:/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_Nios_II_GNU_Linux/bin/nios2-linux-gnu-ld.exe
CMAKE_MAKE_PROGRAM:FILEPATH=C:/MinGW/bin/mingw32-make.exe
CMAKE_MODULE_LINKER_FLAGS:STRING=' '
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_NM:FILEPATH=C:/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_Nios_II_GNU_Linux/bin/nios2-linux-gnu-nm.exe
CMAKE_OBJCOPY:FILEPATH=C:/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_Nios_II_GNU_Linux/bin/nios2-linux-gnu-objcopy.exe
CMAKE_OBJDUMP:FILEPATH=C:/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_Nios_II_GNU_Linux/bin/nios2-linux-gnu-objdump.exe
CMAKE_PROJECT_NAME:STATIC=safes
CMAKE_RANLIB:FILEPATH=C:/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_Nios_II_GNU_Linux/bin/nios2-linux-gnu-ranlib.exe
CMAKE_RC_COMPILER:FILEPATH=C:/MinGW/bin/windres.exe
CMAKE_RC_FLAGS:STRING=' '
CMAKE_SH:FILEPATH=CMAKE_SH-NOTFOUND
CMAKE_SHARED_LINKER_FLAGS:STRING=' '
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_SKIP_INSTALL_RPATH:BOOL=OFF
CMAKE_SKIP_RPATH:BOOL=OFF
CMAKE_STATIC_LINKER_FLAGS:STRING=
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_STRIP:FILEPATH=C:/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_Nios_II_GNU_Linux/bin/nios2-linux-gnu-strip.exe
CMAKE_TOOLCHAIN_FILE:FILEPATH=T:/toolchain/Toolchain-nios2-linux.cmake
CMAKE_USE_RELATIVE_PATHS:BOOL=OFF
CMAKE_VERBOSE_MAKEFILE:BOOL=OFF
core_BINARY_DIR:STATIC=T:/core
core_LIB_DEPENDS:STATIC=
core_SOURCE_DIR:STATIC=T:/sources/core
crypto_BINARY_DIR:STATIC=T:/crypto
crypto_LIB_DEPENDS:STATIC=
crypto_SOURCE_DIR:STATIC=T:/sources/crypto
protocol_BINARY_DIR:STATIC=T:/protocol
protocol_LIB_DEPENDS:STATIC=
protocol_SOURCE_DIR:STATIC=T:/sources/protocol
safes_BINARY_DIR:STATIC=T:/
safes_SOURCE_DIR:STATIC=T:/sources
server_BINARY_DIR:STATIC=T:/server
server_SOURCE_DIR:STATIC=T:/sources/server
user_control_BINARY_DIR:STATIC=T:/user_control
user_control_LIB_DEPENDS:STATIC=
user_control_SOURCE_DIR:STATIC=T:/sources/user_control
utils_BINARY_DIR:STATIC=T:/utils
utils_LIB_DEPENDS:STATIC=
utils_SOURCE_DIR:STATIC=T:/sources/utils
########################
# INTERNAL cache entries
########################
Boost_ATOMICS_LIBRARY_DEBUG-ADVANCED:INTERNAL=1
Boost_ATOMICS_LIBRARY_RELEASE-ADVANCED:INTERNAL=1
Boost_CHRONO_LIBRARY_DEBUG-ADVANCED:INTERNAL=1
Boost_CHRONO_LIBRARY_RELEASE-ADVANCED:INTERNAL=1
Boost_DIR-ADVANCED:INTERNAL=1
Boost_INCLUDE_DIR-ADVANCED:INTERNAL=1
Boost_LIBRARY_DIR-ADVANCED:INTERNAL=1
Boost_SYSTEM_LIBRARY_DEBUG-ADVANCED:INTERNAL=1
Boost_SYSTEM_LIBRARY_RELEASE-ADVANCED:INTERNAL=1
Boost_THREAD_LIBRARY_DEBUG-ADVANCED:INTERNAL=1
Boost_THREAD_LIBRARY_RELEASE-ADVANCED:INTERNAL=1
CMAKE_AR-ADVANCED:INTERNAL=1
CMAKE_BUILD_TOOL-ADVANCED:INTERNAL=1
CMAKE_BUILD_TOOL:INTERNAL=C:/MinGW/bin/mingw32-make.exe
CMAKE_CACHEFILE_DIR:INTERNAL=t:/fircopro_cmake/toolchain_win_eclipse
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=2
CMAKE_CACHE_MINOR_VERSION:INTERNAL=8
CMAKE_CACHE_PATCH_VERSION:INTERNAL=12
CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
CMAKE_COMMAND:INTERNAL=C:/Program Files (x86)/CMake 2.8/bin/cmake.exe
CMAKE_CPACK_COMMAND:INTERNAL=C:/Program Files (x86)/CMake 2.8/bin/cpack.exe
CMAKE_CTEST_COMMAND:INTERNAL=C:/Program Files (x86)/CMake 2.8/bin/ctest.exe
CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT-ADVANCED:INTERNAL=1
CMAKE_ECLIPSE_VERSION-STRINGS:INTERNAL=3.2 (Callisto);3.3 (Europa);3.4 (Ganymede);3.5 (Galileo);3.6 (Helios);3.7 (Indigo);4.2 (Juno)
CMAKE_EDIT_COMMAND:INTERNAL=C:/Program Files (x86)/CMake 2.8/bin/cmake-gui.exe
CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
CMAKE_EXTRA_GENERATOR:INTERNAL=Eclipse CDT4
CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS:INTERNAL=c:program files (x86)codesourcerysourcery_codebench_lite_for_nios_ii_gnu_linuxbin../lib/gcc/nios2-linux-gnu/4.7.3/../../../../nios2-linux-gnu/include/c++/4.7.3;c:program files (x86)codesourcerysourcery_codebench_lite_for_nios_ii_gnu_linuxbin../lib/gcc/nios2-linux-gnu/4.7.3/../../../../nios2-linux-gnu/include/c++/4.7.3/nios2-linux-gnu;c:program files (x86)codesourcerysourcery_codebench_lite_for_nios_ii_gnu_linuxbin../lib/gcc/nios2-linux-gnu/4.7.3/../../../../nios2-linux-gnu/include/c++/4.7.3/backward;c:program files (x86)codesourcerysourcery_codebench_lite_for_nios_ii_gnu_linuxbin../lib/gcc/nios2-linux-gnu/4.7.3/include;c:program files (x86)codesourcerysourcery_codebench_lite_for_nios_ii_gnu_linuxbin../lib/gcc/nios2-linux-gnu/4.7.3/include-fixed;c:program files (x86)codesourcerysourcery_codebench_lite_for_nios_ii_gnu_linuxbin../lib/gcc/nios2-linux-gnu/4.7.3/../../../../nios2-linux-gnu/include;c:program files (x86)codesourcerysourcery_codebench_lite_for_nios_ii_gnu_linuxbin../nios2-linux-gnu/libc/usr/include
CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS:INTERNAL=c:program files (x86)codesourcerysourcery_codebench_lite_for_nios_ii_gnu_linuxbin../lib/gcc/nios2-linux-gnu/4.7.3/include;c:program files (x86)codesourcerysourcery_codebench_lite_for_nios_ii_gnu_linuxbin../lib/gcc/nios2-linux-gnu/4.7.3/include-fixed;c:program files (x86)codesourcerysourcery_codebench_lite_for_nios_ii_gnu_linuxbin../lib/gcc/nios2-linux-gnu/4.7.3/../../../../nios2-linux-gnu/include;c:program files (x86)codesourcerysourcery_codebench_lite_for_nios_ii_gnu_linuxbin../nios2-linux-gnu/libc/usr/include
CMAKE_GENERATOR:INTERNAL=MinGW Makefiles
CMAKE_GENERATOR_TOOLSET:INTERNAL=
CMAKE_HAVE_LIBC_CREATE:INTERNAL=1
CMAKE_HAVE_PTHREAD_H:INTERNAL=1
CMAKE_HOME_DIRECTORY:INTERNAL=T:/fircopro_cmake/sources
CMAKE_LINKER-ADVANCED:INTERNAL=1
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
CMAKE_NM-ADVANCED:INTERNAL=1
CMAKE_NUMBER_OF_LOCAL_GENERATORS:INTERNAL=7
CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
CMAKE_RANLIB-ADVANCED:INTERNAL=1
CMAKE_RC_COMPILER-ADVANCED:INTERNAL=1
CMAKE_RC_COMPILER_WORKS:INTERNAL=1
CMAKE_RC_FLAGS-ADVANCED:INTERNAL=1
CMAKE_ROOT:INTERNAL=C:/Program Files (x86)/CMake 2.8/share/cmake-2.8
CMAKE_SH-ADVANCED:INTERNAL=1
CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
CMAKE_STRIP-ADVANCED:INTERNAL=1
CMAKE_SUPPRESS_DEVELOPER_WARNINGS:INTERNAL=FALSE
CMAKE_USE_RELATIVE_PATHS-ADVANCED:INTERNAL=1
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()]
_BOOST_ROOT_LAST:INTERNAL=C:/boost_1_55_0
_Boost_COMPILER_LAST:INTERNAL=-gcc
_Boost_COMPONENTS_SEARCHED:INTERNAL=atomics;chrono;system;thread
_Boost_INCLUDE_DIR_LAST:INTERNAL=C:/boost_1_55_0
_Boost_LIBRARY_DIR_LAST:INTERNAL=C:boost_1_55_0stagelib
_Boost_NO_SYSTEM_PATHS_LAST:INTERNAL=TRUE
_Boost_USE_MULTITHREADED_LAST:INTERNAL=TRUE
有什么解决这个问题的想法吗?
感谢
我通过在工具链文件中设置变量set(CMAKE_SYSTEM_NAME Generic)
解决了这个问题。我使用的是Windows而不是Generic,当我改为"Generic"时,生成效果很好。
这些设置来自CMake本身:
http://cmake.org/gitweb?p=cmake.git;a=斑点;f=模块/平台/Windows-GNU.cmake;h=990acea64c3b0666edf28eb3604e626a219af04d;hb=封头#113
您可以尝试将CMAKE_${lang}_CREATE_*
复制到工具链文件中,并删除导致问题的位。我不知道这些标志的作用,所以删除它们可能会导致其他问题,你必须解决这些问题。
相关文章:
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- CMake - 更改共享库链接选项
- Eclipse CDT clang 工具链 - 无法从链接器选项中删除 stdlibc++,但可以添加 libc++,E
- 使用Bazel构建具有不同编译器/链接器选项的C/C++依赖关系
- '-print_statistics'链接器选项在 Xcode 中产生错误
- C++ ld 链接器 --wrap 选项不适用于内部函数调用
- 提升程序选项:链接错误
- 如何从"开始组..结束组"链接器选项构建文件列表
- C++构建系统 - 远程编译和链接选项
- clang,linux是否有一个选项可以在链接时更改共享库名称
- 在源文件中定义链接选项C++
- 有-g和没有-DNDEBUG选项的链接时间很长
- 相同的C 代码,不同的链接选项会导致不同的行为
- AC_LANG_PROGRAM由于链接器选项的顺序失败了链接阶段
- 当我仅使用链接器选项 /LTCG时,为什么Visual Studio在Linker命令行中显示选项 /PGD
- 如何在CodeBlocks附加链接器选项中指定子系统
- Eclipse CDT链接选项-静态libgcc-静态libstdc++不影响Windows上的行为
- 用于链接的VC 11.0命令链接选项是什么
- Boost库构建-运行时链接和链接选项之间的差异
- 链接选项与g++