C (GCC 8.3.0) C (GCC 9.2.0) C# (Mono 6.6.0.161) C++ (GCC 7.4.0) C++ (GCC 8.3.0) C++ (GCC 9.2.0) Common Lisp (SBCL 2.0.0) D (DMD 2.089.1) Elixir (1.9.4) Erlang (OTP 22.2) Fortran (GFortran 9.2.0) Go (1.13.5) ...
如果当前链接目录下同时存在相同名称的共享库和静态库,比如libcshare.so、libcshare.a,在不加任何选项的情况下, 编译器优先选择链接共享库,除非添加-static; -L (-Ldir)添加链接时共享库搜索目录; 1 gcctest.c -otest-lcshare -L/xx/xx -std= 选择适配的 C/C++ 标准版本,可选的有 c89/c90/c99/c11 等...
gcc为我们提供了(-static)、(-Wl,-Bstatic)、(-Wl,-Bdynamic),这么几个选项。 第一种用法:使用-static选项,将全部动态库都用静态库替换。 这里有个基于boost库的程序,我们使用普通动态链接的方式编译出来,看看可执行程序的依赖关系。 由上图可见,可执行程序依赖于libboost_thread.so.1.72.0、libpthread.so.0...
静态库(Static Library) 类似于你个人的书包,你从图书馆中选择了一些书籍,把它们拷贝到你的书包里。这些书籍是你个人拥有的,可以在需要的时候直接使用。当你需要使用这些书籍时,你只需从书包中取出,不需要依赖图书馆,也不会影响其他学生。 在编程中,静态库是在编译时将库的代码和程序代码链接在一起,形成一个单独...
默认情况下,gcc 在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库。 如果需要的话,可以在编译时加上 -static 选项,强制使用静态链接库。 (5) -shared 生成一个共享的目标文件,它能够与其他的目标一起链接生成一个可执行的文件。
-static: 生成可执行文件时,禁止生成任何共享链接,包括标准库都使用静态链接 -share: 生成可执行文件时,倾向于使用动态链接 -static-libstdc++: 如果没有这个选项,则默认使用libstdc++共享库,而这个选项可以指定使用libstdc++静态库 -Wa,option: 此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项...
-static 此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么动态连接库,就可以运行。 -share 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库。 -traditional 试图让编译器支持传统的C语言特性。 GCC 是 GNU 的 C 和 C++ 编译器。实际上,GCC 能够编译三种语言:C、C++ 和 ...
-static 禁止使用共享连接。 -UMACRO 取消对 MACRO 宏的定义。 -w 不生成任何警告信息。 -Wall 生成所有警告信息。 参数详解 -x language filename设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀...
$ gcc -Wall -static -I/opt/gdbm-1.8.3/include/ -L/opt/gdbm-1.8.3/lib/ dbmain.c -lgdbm 上行代码创建了一个与静态库'libgdbm.a'链接的可执行文件,可以在不设置LD_LIBRARY_PATH环境变量或将共享库放入默认目录的情况下运行。 如前所述,还可以通过指定命令行上的库的完整路径直接链接到单个库文件。