Usually a static archive (.a file) is created with 'ar' rather than 'g++'. To create an object file (.o file) that can be linked later on, use the following command: ld -r -o <output file here> <input file(s) here> I never use gcc/g++ to do that.
------------------ Best regards, lh_mouse 2016-05-11 ------------------------------------------------------------- 发件人:Tamir Duberstein <[email protected]> 发送日期:2016-05-10 23:57 收件人:mingw-w64-public 抄送: 主题:[Mingw-w64-public] ignoring missing symbols doesn't seem to work Hello! I've been attempting to cross-compile CockroachDB to Windows using mingw-w64. The compilation strategy used for CockroachDB involves producing static archives with missing symbols (this is due to how golang's tooling compiles c/c++ code). In our linux builds, we pass `-Wl,--unresolved-symbols=ignore-all` to the compiler to silence these unresolved symbols warnings in our intermediate static archives - however, it seems that mingw-w64's g++ binary (`x86_64-w64-mingw32-g++-posix` is the one I've tested) doesn't respect this flag. Does anyone know why this might be, or where to begin investigating? More detail is here: https://github.com/karalabe/xgo/issues/26#issuecomment-214521117 Our build output ends up with: ``` x86_64-w64-mingw32-g++-posix -I . -m64 -mthreads -fmessage-length=0 -Iinternal -Iinternal/include -Iinternal/db -Iinternal/util -Iinternal/utilities/merge_operators/string_append -I../../cockroachdb/c-snappy/internal -DNDEBUG -DSNAPPY -DOS_WIN -I $WORK/github.com/cockroachdb/c-rocksdb/_obj/ -D_WIN32_WINNT=0x0600 -std=c++11 -fno-omit-frame-pointer -momit-leaf-frame-pointer -o $WORK/github.com/cockroachdb/c-rocksdb/_obj/port_platform.cc.o -c ./port_platform.cc x86_64-w64-mingw32-g++-posix -I . -m64 -mthreads -fmessage-length=0 -o $WORK/github.com/cockroachdb/c-rocksdb/_obj/_cgo_.o $WORK/github.com/cockroachdb/c-rocksdb/_obj/_cgo_main.o <long list of input files> -g -O2 -Wl,--unresolved-symbols=ignore-all -lrpcrt4 # github.com/cockroachdb/c-rocksdb /tmp/go-build123696693/github.com/cockroachdb/c-rocksdb/_obj/internal_table_block_based_table_builder.cc.o:internal_table_block_based_table_builder.cc:(.text$_ZN7rocksdb15Snappy_CompressERKNS_18CompressionOptionsEPKcyPSs[_ZN7rocksdb15Snappy_CompressERKNS_18CompressionOptionsEPKcyPSs]+0x20): undefined reference to `snappy::MaxCompressedLength(unsigned long long)' /tmp/go-build123696693/github.com/cockroachdb/c-rocksdb/_obj/internal_table_block_based_table_builder.cc.o:internal_table_block_based_table_builder.cc:(.text$_ZN7rocksdb15Snappy_CompressERKNS_18CompressionOptionsEPKcyPSs[_ZN7rocksdb15Snappy_CompressERKNS_18CompressionOptionsEPKcyPSs]+0x5a): undefined reference to `snappy::RawCompress(char const*, unsigned long long, char*, unsigned long long*)' /tmp/go-build123696693/github.com/cockroachdb/c-rocksdb/_obj/internal_table_format.cc.o:internal_table_format.cc:(.text$_ZN7rocksdb28Snappy_GetUncompressedLengthEPKcyPy[_ZN7rocksdb28Snappy_GetUncompressedLengthEPKcyPy]+0x27): undefined reference to `snappy::GetUncompressedLength(char const*, unsigned long long, unsigned long long*)' /tmp/go-build123696693/github.com/cockroachdb/c-rocksdb/_obj/internal_table_format.cc.o:internal_table_format.cc:(.text$_ZN7rocksdb17Snappy_UncompressEPKcyPc[_ZN7rocksdb17Snappy_UncompressEPKcyPc]+0x27): undefined reference to `snappy::RawUncompress(char const*, unsigned long long, char*)' collect2: error: ld returned 1 exit status 2016/04/25 17:01:39 Failed to cross compile package: exit status 2. ``` Thanks in advance for your help! ------------------------------------------------------------------------------ Mobile security can be enabling, not merely restricting. Employees who bring their own devices (BYOD) to work are irked by the imposition of MDM restrictions. Mobile Device Manager Plus allows you to control only the apps on BYO-devices by containerizing them, leaving personal data untouched! https://ad.doubleclick.net/ddm/clk/304595813;131938128;j _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public ------------------------------------------------------------------------------ Mobile security can be enabling, not merely restricting. Employees who bring their own devices (BYOD) to work are irked by the imposition of MDM restrictions. Mobile Device Manager Plus allows you to control only the apps on BYO-devices by containerizing them, leaving personal data untouched! https://ad.doubleclick.net/ddm/clk/304595813;131938128;j _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
