考虑我想从我的C ++文件foo.cpp
构建一个共享库。该文件依赖于各种库,例如a b c,即-la -lb -lc
。在linux下,我可以通过以下调用来执行此操作:
g++ -shared -o foo.so foo.cpp
请注意,我不必在此指定-la -lb -lc
。链接器只是忽略所有未解析的符号。
当我在cygwin环境中的Windows下尝试相同的事情时,我收到链接器错误,告诉我来自库a
b
和c
的符号未找到。我不得不在命令中添加-la -lb -lc
:
g++ -shared -o foo.dll foo.cpp -la -lb -lc
然而,这会起作用,因为必须读取库的符号表,这会大大减慢过程。如何使用cygwin构建.dll而不必指定我需要的库,即如何使cygwin g++
执行与linux g++
相同的操作。