我正在使用SFML,并且正在使用Code::Block和mingw32构建一个应用程序。我已经在我的项目中添加了SFML库(sfml-whatever.a),它运行得很好。
但是iIrc,静态库被“编译”成了可执行文件。如果是这样的话,为什么我必须将所有的SFML DLL放在可执行文件的旁边,才能让它在Code::块之外的任何地方运行?如果我以某种方式“动态链接”代码::块中的动态链接库到我的项目中(我不知道如何做到这一点),我是否仍然必须将我的可执行文件与所有.a文件一起发布,才能正常运行?
提前感谢,我对库不是很熟悉,无论是静态的还是动态的。如果有什么不同的话,那就是我正在Ubuntu l
我有一个问题,了解如何在构建动态库货物链接二进制文件。为了更好地理解它,我使用了,并尝试构建'ls‘更改Cargo.toml和其他东西,以使可执行文件尽可能小。我很快发现动态链接库可以大大减少可执行文件的大小。
通过互联网进行优化,我发现当您在货中以"dylibs“的形式生成库时,它们仍然静态地包含"libstd”,除非您显式地告诉编译器使用"-C偏好-动态“标记动态地包含它。
我不使用这个标志,但最终仍然有libstd动态链接,这是非常奇怪的。
ls的Cargo.toml
我对这个做了一点修改。
[package]
name = "ls"
ve
我有些怀疑:
用例:
A static library containing a global variable, static variable, a function
and a class defined
A shared library uses these and hence they are part of the same.
A executable program also uses the same and they are part of the same.
The executable loads the shared library
我正在尝试构建一个依赖于二进制分布式静态库的项目。
链接器抱怨它找不到ini_config函数,其中包括:
config_params.c:(.text+0x16f): undefined reference to `ini_get_config_valueobj'
它找到动态库,但找不到静态版本:
attempt to open /usr/lib/gcc/x86_64-linux-gnu/7/libini_config.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu