40得票5回答
有没有一种方法可以确定使用哪个版本的Visual Studio编译了一个静态库?

我有一组静态库(.lib)文件,其中可能有一个是使用了不同版本的Visual Studio进行编译的。这导致了一个链接了所有静态库的项目的代码生成失败。有没有办法确定哪个版本的Visual Studio被用于编译一个静态库?

38得票1回答
使用MinGW进行静态和动态/共享链接

我想从一个简单的链接用法开始解释我的问题。假设有一个库z,它可以编译为共享库libz.dll(D:/libs/z/shared/libz.dll)或静态库libz.a (D:/libs/z/static/libz.a)。如果我想要链接这个库,那么我会这样做:gcc -o main.exe ma...

36得票3回答
CMake和静态链接

我在一个项目中使用CMake,并尝试静态链接一些库。 我已经设置了:set(BUILD_SHARED_LIBS OFF) set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static") set_target_prop...

32得票1回答
程序无法找到libgcc_s_dw2-1.dll库文件

我正在使用Code::Blocks和MinGW 4.4编译器创建一个C++项目。如果我从它的目录中运行它,我会得到这个系统错误,但是如果我在Code::Blocks中运行它,则不会出现此错误。可能重复:The program can't start because libgcc_s_dw2-1...

32得票3回答
ar 命令中的 "rcs" 选项是什么意思?

我确实阅读了man手册,但没有帮助。 rcs似乎是传递给ar的最流行选项,但是它的含义对我来说并不那么清晰。 因此,c表示创建一个新存档文件,但是为什么要使用r呢?它似乎代表“替换”?s选项会对输出产生什么影响?

32得票3回答
当链接时如何使gcc更倾向于使用静态库而不是共享对象?

使用 -l 选项连接库时(比如 -lfoo),gcc 会优先选择共享对象而不是静态库,如果两者都存在(将会选择 libfoo.so 而不是 libfoo.a)。是否有一种方法可以让gcc在两者都存在的情况下优先选择静态库? 我要解决的问题是:我正在为一个应用程序(名为X-Plane的飞行模拟...

31得票4回答
将Yesod部署到Heroku,无法静态构建

我对Yesod还非常陌生,现在正在尝试将Yesod静态构建以便可以部署到Heroku上。 我已经修改了默认的.cabal文件以反映出静态编译。if flag(production) cpp-options: -DPRODUCTION ghc-options: -Wall ...

30得票2回答
使用-static-libgcc -static-libstdc++进行编译仍然会导致对libc.so的动态依赖性

我试图制作一个尽可能便携的可执行文件。在删除了一些依赖项后,当在另一个系统上运行二进制文件时,我遇到了以下情况:/lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.15' not found (required by foob) /lib/x86...

30得票2回答
如何强制gcc链接库中未被引用的静态C++对象

我正在使用一个可以构建为共享或静态库的C++库。该库使用工厂技术,在程序启动时静态对象会注册自己并创建这些静态对象。 只要使用共享库,这个工作就很好。当使用静态版本时,由于没有直接引用它们,所以所有的静态对象都没有被包含到最终的程序中,因此它们的功能不可用。 有办法强制gcc在链接时包含来...

29得票1回答
MinGW如何创建dll.a文件?这些是什么类型的库文件?

我对Windows和Linux库的编译比较熟悉,但是今天在我的Windows机器上看到MinGW进行OpenCV编译后抛出了dll.a和.a文件,这让我开始认真思考。 这些是我从OpenCV编译中得到的\lib输出:2012-12-21 23:35 1 338 420 li...