gcc -Wl,param1,param2,param3,... 在调用ld命令时,会等效于如下: ld param1 param2 param3 注意:-Wl, 后的逗号(,)必不可少,如果要传递多个参数,参数间用,分隔 -Wl,-Bstatic 指定后续ld在处理 -l 参数来链接库文件的链接方式首选静态库 -Wl,-Bdynamic 指定后续ld在处理 -l 参数来链接库文件的链接...
3.gcc -share-L./subDir-lsub -o libmain.so main.o 此命令可编译并链接通过,但是ldd -r libmain.so时会发现 libsub.so => not found。因为 libsub.o在目录subDir下。 4.gcc -share-Wl,-rpath-link='./subDir'-L./subDir -lsub -o libmain.so main.o 此命令可编译并链接通过,但是在ldd -r...
因为其他机器的操作系统都可能和你的编译的操作系统不同,比如:一个是Ubuntu,一个是CentOS。
GCC/G++选项 -Wl,-rpath= Mason 明月清风我 19 人赞同了该文章 我们知道,GCC/G++提供了-L选项用于链接时指定要链接的库的路径,但是这个选项只限于编译时,在运行时,可执行文件并未记住链接库的路径,因此在程序初始化的时候,动态加载程序会报告找不到动态库错误。
(5)-Wl:传递参数给链接器。 (6)-rpath:指定运行时库搜索路径。 5. 其他选项 (1)-v:显示编译器版本信息。 (2)-dumpversion:显示编译器版本号。 (3)-dumpmachine:显示编译器目标机器。 (4)-print-search-dirs:显示搜索路径。 (5)-print-libgcc-file-name:显示libgcc文件路径。 以上是GCC命令的一些常用选项...
gcc test.c -lhello -L . -Wl,-rpath-link ./lib_tmp 1. -rpath和-rpath-link都可以在链接时指定库的路径;但是运行可执行文件时,-rpath-link指定的路径就不再有效(链接器没有包含进可执行文件中),而-rpath指定的路径还有效(因为链接器已经将库的路径包含在可执行文件中了)。 最后,不管使用了-rpath还是...
在使用GCC/G++进行程序编译时,可以通过-L选项指定链接库的路径。然而,该选项仅在编译阶段生效,运行时程序并不会记住链接库的具体位置,导致动态加载时可能出现找不到动态库的错误。例如,当执行命令提示"error while loading shared libraries: XXX.so: cannot open shared object file: No such file ...
-l<库名>:链接某个库文件。 -I<头文件路径>:指定头文件的搜索路径。 -L<库文件路径>:指定库文件的搜索路径。 例如,如果有一个名为main.c的C语言源代码文件,想要将其编译成可执行文件main,可以使用以下命令: gcc -o main main.c 该命令将源文件main.c编译成可执行文件main。
gcc file.c -L/path/to/library -lname 其中,-L选项用于指定静态库的搜索路径,-lname选项用于指定需要链接的静态库名。 – 动态库的链接: gcc file.c -L/path/to/library -lname -Wl,-rpath=/path/to/library 其中,-Wl,-rpath选项用于指定运行时链接库的搜索路径。
-wl,-rpath=路径 这个参数和-I(小写是i)一样,告诉程序首先去这个目录找这个动态库。只要在可执行程序在编译阶段加上这个参数,这个路径会编译到可执行程序中去。所以上面的编译main.c改成这样既可: gcc main.c-I.-wl,-rpath=.-ltest-L.-o mian.out ...