这是关于c ++程序分发的一个非常基本的问题。假设我有以下程序
#include "v8.h"
#include <SDL.h>
int main (int argc, char** argv)
{
// [AWSOME STUFF!]
return 0;
}
这取决于谷歌的V8和SDL2。在我的Mac上,我安装了这两个库,我能够成功编译这个程序:
clang++ -std=c++11 -I/usr/local/include -I/Library/Frameworks/SDL2.framework/Headers myprogram.cpp
要链接库,我可以这样做:
clang++ -F/Library/Frameworks -framework SDL2 -lv8 myprogram.o -o program
如果我理解它,它可以在我的计算机上运行,因为库是动态链接的。如果我想将其分发给可能没有安装它们的其他人,该怎么办?如何静态编译它们以使包含在二进制文件中?或者我如何动态链接它们但是用软件分发库?
答案 0 :(得分:1)
-L
用于指定库路径
-l
用于指定库名称
如果外部组件(Google的V8和SDL2)可以使用静态库,则链接到它将将它们嵌入可执行文件中。然后只分发可执行文件即可。
如果使用共享/动态库进行链接,则必须包含共享/动态库以及分发包。
注意:在分发共享/动态库时,请注意任何其他依赖项及其版本。