2014-04-16 75 views
3

我正在使用CMake在Linux和Windows中使用特定工具鏈編譯(nios2-linux-gnu-g ++ .exe(Sourcery CodeBench Lite 2013.05-43)4.7.3)。CMake交叉編譯生成無效的鏈接器選項

從CMake生成的選項「-Wl, - out-implib,myapp.dll.a」和「-Wl, - 主要圖像版本,0, - 次要圖像版本,0」鏈接器對編譯器無效。

編譯器錯誤:

  • NIOS2-Linux的GNU /斌/ ld.exe: '--out-IMPLIB'
  • NIOS2-Linux的GNU /斌/ ld.exe識別的選項:無法識別選項 ' - 主要圖像版本'
  • NIOS2-Linux的GNU /斌/ ld.exe:無法識別的選項 '--minor圖像版本'

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_0\stage\lib 
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)\codesourcery\sourcery_codebench_lite_for_nios_ii_gnu_linux\bin\../lib/gcc/nios2-linux-gnu/4.7.3/../../../../nios2-linux-gnu/include/c++/4.7.3;c:\program files (x86)\codesourcery\sourcery_codebench_lite_for_nios_ii_gnu_linux\bin\../lib/gcc/nios2-linux-gnu/4.7.3/../../../../nios2-linux-gnu/include/c++/4.7.3/nios2-linux-gnu;c:\program files (x86)\codesourcery\sourcery_codebench_lite_for_nios_ii_gnu_linux\bin\../lib/gcc/nios2-linux-gnu/4.7.3/../../../../nios2-linux-gnu/include/c++/4.7.3/backward;c:\program files (x86)\codesourcery\sourcery_codebench_lite_for_nios_ii_gnu_linux\bin\../lib/gcc/nios2-linux-gnu/4.7.3/include;c:\program files (x86)\codesourcery\sourcery_codebench_lite_for_nios_ii_gnu_linux\bin\../lib/gcc/nios2-linux-gnu/4.7.3/include-fixed;c:\program files (x86)\codesourcery\sourcery_codebench_lite_for_nios_ii_gnu_linux\bin\../lib/gcc/nios2-linux-gnu/4.7.3/../../../../nios2-linux-gnu/include;c:\program files (x86)\codesourcery\sourcery_codebench_lite_for_nios_ii_gnu_linux\bin\../nios2-linux-gnu/libc/usr/include 
CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS:INTERNAL=c:\program files (x86)\codesourcery\sourcery_codebench_lite_for_nios_ii_gnu_linux\bin\../lib/gcc/nios2-linux-gnu/4.7.3/include;c:\program files (x86)\codesourcery\sourcery_codebench_lite_for_nios_ii_gnu_linux\bin\../lib/gcc/nios2-linux-gnu/4.7.3/include-fixed;c:\program files (x86)\codesourcery\sourcery_codebench_lite_for_nios_ii_gnu_linux\bin\../lib/gcc/nios2-linux-gnu/4.7.3/../../../../nios2-linux-gnu/include;c:\program files (x86)\codesourcery\sourcery_codebench_lite_for_nios_ii_gnu_linux\bin\../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_0\stage\lib 
_Boost_NO_SYSTEM_PATHS_LAST:INTERNAL=TRUE 
_Boost_USE_MULTITHREADED_LAST:INTERNAL=TRUE 

如何解決此問題的任何想法?

感謝

回答

0

這些設置來自CMake的本身:

http://cmake.org/gitweb?p=cmake.git;a=blob;f=Modules/Platform/Windows-GNU.cmake;h=990acea64c3b0666edf28eb3604e626a219af04d;hb=HEAD#l113

你可以嘗試複製CMAKE_${lang}_CREATE_*到您的工具鏈文件,並刪除導致問題的位。我不知道這些標誌是做什麼的,因此刪除它們可能會導致其他問題,您必須理清。

+0

在工具鏈文件中,此屬性尚未生成。在「project(...)」聲明之後的「CMakeLists.txt」中,我插入「字符串替換」,刪除無效標誌。 這工作! 謝謝 – Alvaro

2

我通過在工具鏈文件中設置變量集(CMAKE_SYSTEM_NAME Generic)來解決問題。我使用的是Windows而不是Generic,當我更改爲「Generic」時,這一代工作正常。

相關問題