[ https://issues.apache.org/jira/browse/THRIFT-4159?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15962078#comment-15962078 ]
Mario Emmenlauer commented on THRIFT-4159: ------------------------------------------ Thanks! I have made an "official" MSYS2 package for thrift now. Once the PR is merged, thrift binary can be installed via pacman. PR here: https://github.com/Alexpux/MINGW-packages/pull/2379 > Building tests fails on MSYS2 (MinGW64) due to a (small?) linker error > ---------------------------------------------------------------------- > > Key: THRIFT-4159 > URL: https://issues.apache.org/jira/browse/THRIFT-4159 > Project: Thrift > Issue Type: Bug > Components: Build Process > Affects Versions: 1.0 > Environment: MSYS2 MinGW64 compiler gcc-6.3 > Reporter: Mario Emmenlauer > Assignee: James E. King, III > Fix For: 0.11.0 > > > When I build thrift in static mode with cmake, and I enable BUILD_TESTING, > I get a linker error: > {code} > Scanning dependencies of target SecurityTest > [ 65%] Building CXX object > lib/cpp/test/CMakeFiles/SecurityTest.dir/SecurityTest.cpp.obj > [ 66%] Linking CXX executable ../../../bin/SecurityTest.exe > ../../libthrift.a(TServerSocket.cpp.obj):TServerSocket.cpp:(.text+0xcb3): > undefined reference to > `apache::thrift::transport::TWinsockSingleton::create()' > ../../libthrift.a(TServerSocket.cpp.obj):TServerSocket.cpp:(.text+0xcc8): > undefined reference to `thrift_socketpair(int, int, int, unsigned long long*)' > ../../libthrift.a(TServerSocket.cpp.obj):TServerSocket.cpp:(.text+0xcf8): > undefined reference to `thrift_socketpair(int, int, int, unsigned long long*)' > ../../libthrift.a(TServerSocket.cpp.obj):TServerSocket.cpp:(.text+0xfa3): > undefined reference to `thrift_fcntl' > ../../libthrift.a(TServerSocket.cpp.obj):TServerSocket.cpp:(.text+0xfc0): > undefined reference to `thrift_fcntl' > ../../libthrift.a(TServerSocket.cpp.obj):TServerSocket.cpp:(.text+0x1127): > undefined reference to `thrift_sleep(unsigned int)' > ../../libthrift.a(TServerSocket.cpp.obj):TServerSocket.cpp:(.text+0x200c): > undefined reference to `thrift_poll' > ../../libthrift.a(TServerSocket.cpp.obj):TServerSocket.cpp:(.text+0x212e): > undefined reference to `thrift_fcntl' > ../../libthrift.a(TServerSocket.cpp.obj):TServerSocket.cpp:(.text+0x214a): > undefined reference to `thrift_fcntl' > ../../libthrift.a(TSSLSocket.cpp.obj):TSSLSocket.cpp:(.text+0x211e): > undefined reference to `thrift_poll' > ../../libthrift.a(TSSLSocket.cpp.obj):TSSLSocket.cpp:(.text+0x21cd): > undefined reference to `thrift_poll' > ../../libthrift.a(TSSLSocket.cpp.obj):TSSLSocket.cpp:(.text+0x4a1a): > undefined reference to `thrift_fcntl' > ../../libthrift.a(TSSLSocket.cpp.obj):TSSLSocket.cpp:(.text+0x4a36): > undefined reference to `thrift_fcntl' > ../../libthrift.a(TSSLSocket.cpp.obj):TSSLSocket.cpp:(.text+0x58da): > undefined reference to `thrift_fcntl' > ../../libthrift.a(TSSLSocket.cpp.obj):TSSLSocket.cpp:(.text+0x58f6): > undefined reference to `thrift_fcntl' > ../../libthrift.a(TOutput.cpp.obj):TOutput.cpp:(.text+0x54): undefined > reference to `thrift_ctime_r(long long const*, char*)' > ../../libthrift.a(TSocket.cpp.obj):TSocket.cpp:(.text+0x1e76): undefined > reference to `thrift_poll' > ../../libthrift.a(TSocket.cpp.obj):TSocket.cpp:(.text+0x25a0): undefined > reference to `thrift_fcntl' > ../../libthrift.a(TSocket.cpp.obj):TSocket.cpp:(.text+0x25c5): undefined > reference to `thrift_fcntl' > ../../libthrift.a(TSocket.cpp.obj):TSocket.cpp:(.text+0x26ee): undefined > reference to `thrift_poll' > ../../libthrift.a(TSocket.cpp.obj):TSocket.cpp:(.text+0x2749): undefined > reference to `thrift_fcntl' > ../../libthrift.a(TSocket.cpp.obj):TSocket.cpp:(.text+0x2a0a): undefined > reference to `thrift_fcntl' > ../../libthrift.a(TSocket.cpp.obj):TSocket.cpp:(.text+0x35f1): undefined > reference to `apache::thrift::transport::TWinsockSingleton::create()' > ../../libthrift.a(TSocket.cpp.obj):TSocket.cpp:(.text+0x3a44): undefined > reference to `thrift_gettimeofday(timeval*, timezone*)' > ../../libthrift.a(TSocket.cpp.obj):TSocket.cpp:(.text+0x3aaf): undefined > reference to `thrift_poll' > ../../libthrift.a(TSocket.cpp.obj):TSocket.cpp:(.text+0x3cfc): undefined > reference to `thrift_gettimeofday(timeval*, timezone*)' > ../../libthrift.a(TSocket.cpp.obj):TSocket.cpp:(.text+0x3d3f): undefined > reference to `thrift_usleep(unsigned int)' > ../../libthrift.a(TSocket.cpp.obj):TSocket.cpp:(.text+0x6443): undefined > reference to `apache::thrift::transport::TWinsockSingleton::create()' > collect2.exe: error: ld returned 1 exit status > make[2]: *** [lib/cpp/test/CMakeFiles/SecurityTest.dir/build.make:116: > bin/SecurityTest.exe] Error 1 > make[1]: *** [CMakeFiles/Makefile2:1269: > lib/cpp/test/CMakeFiles/SecurityTest.dir/all] Error 2 > make: *** [Makefile:161: all] Error 2 > ==> ERROR: A failure occurred in build(). > Aborting... > {code} > Typically this comes from the fact that MSYS2 is more picky about undefined > symbols than other platforms are. The symbols look a bit like they would > be defined in a basic thrift library. Could you please check if the tests > must link the thrift libraries and/or if a library may be missing there? -- This message was sent by Atlassian JIRA (v6.3.15#6346)