我试图从源代码编译itk,它的版本5.3。在windows 10 64位机器上,安装了mingw-w64版本10,我使用cmake(最新版本)来构建itk源代码。
然而,在构建期间,我从另一个源文件中得到了一个链接器错误"为大多数pthread函数找到了多个定义"。
由于我是直接从源代码构建,不应该改变源文件,任何人都可以告诉我如何避免这种错误?
我尝试使用**-fcommon****--allow-multiple-definition链接器选项,但没有任何帮助。
后来发现-fno-common在最新的gcc版本中引入。
也有没有办法建立ITK这个版本与任何其他编译器在windows 10?
我已经尝试与windows sdk最新,但这并没有给我的选项,以生成使文件通过cmake。并给出了一个奇怪的错误nmake文件找不到,即使它是一个默认的cmake生成器的windows。
请注意:* * 我对安装Visual Studio不感兴趣。这就是为什么我无法获得msvc编译器。
正在创建CXX对象模块/核心/公用/源/CMakeFiles/ITKCommon. dir/_ _/itkBuildInformation. cxx. obj [47%]正在链接CXX共享库.........................................................................................................................................................................................................如果您有任何问题,请与我们联系。如果您有任何问题,请与我们联系。pthread_cond_timedwait'; ../../../../lib/libitkdouble-conversion-5.2.dll.a(d000091.o):(.text+0x0): first defined here c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libpthread.a(libwinpthread_la-thread.o):thread.c:(.text+0x14a0): multiple definition of
pthread_once "多个定义;文件名:第一次在这里定义c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../x86_64-w64-mingw32/bin/ld. exe:这个程序可以在一个文件夹中找到一个线程,这个文件夹中有一个线程,这个线程可以在一个文件夹中找到,这个文件夹中有一个线程。"pthread_self'; ../../../../lib/libitkdouble-conversion-5.2.dll.a(d000150.o):(.text+0x0): first defined here c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libpthread.a(libwinpthread_la-mutex.o):mutex.c:(.text+0x80): multiple definition of
pthread_mutex_lock"多重定义;文件名:第一次在这里定义c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../x86_64-w64-mingw32/bin/ld. exe:如果您有任何问题,请与我们联系。如果您有任何问题,请与我们联系。"pthread_mutex_unlock'; ../../../../lib/libitkdouble-conversion-5.2.dll.a(d000124.o):(.text+0x0): first defined here c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libpthread.a(libwinpthread_la-mutex.o):mutex.c:(.text+0x520): multiple definition of
pthread_mutex_init"多个定义;文件名:第一次在这里定义c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../x86_64-w64-mingw32/bin/ld. exe:如果您有任何问题,请与我们联系。如果您有任何问题,请与我们联系。"pthread_mutex_destroy"的多个定义;文件名:首先在此处定义collect2.exe:错误:ld返回1退出状态mingw32-make [5]:***[模块\核心\公用\源\CMakeFiles\ITKCommon. dir\内部版本. make:1772:[4]返回上一页***[C生成文件\生成文件2:5302:模块/核心/公用/源/CMakeFiles/ITKCommon. dir/all]错误2 mingw32-make [3]:***[生成文件:155:所有]错误2 mingw32-make [2]:***[CMakeFiles\ITK.目录\内部版本.制造商:85:错误2 mingw32-make [1]:***[C生成文件\生成文件2:1082:CMakeFiles/ITK.目录/all]错误2 mingw32-make:***[生成文件:145:全部]错误2
1条答案
按热度按时间k5ifujac1#
MinGW既不是官方支持的,nor tested,所以它不工作也不奇怪. Contributions添加支持是受欢迎的.
微软只提供command-line compiler,而不需要VisualStudio。你在Clang for Windows上的运气可能也会比MinGW好。