在Makefile中,-I和-L是两个不同的参数,它们分别用于指定头文件和库文件的搜索路径。 -I参数用于指定头文件的搜索路径,即编译器在编译源代码时,会在指定的路径中查找头文件。例如,如果我们的源代码包含了#include <foo.h>这样的指令,编译器会在-I参数指定的路径中查找foo.h文件。
“-I”(大写i):表示包含头文件; “-L”(大写l):表示库文件目录; “-l”(小写l):表示链接库文件(包括动态库文件,静态库文件); 下面做个记录: 例: gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld 上面这句表示在编译hello.c时: -I /home/hello/include表示将/home/h...
Makefile中的“-I”(⼤写i),“-L”(⼤写l),“-l”(⼩写l)⽤gcc编译程序时,可能会⽤到“-I”(⼤写i),“-L”(⼤写l),“-l”(⼩写l)等参数,“-I”(⼤写i):表⽰包含头⽂件;“-L”(⼤写l):表⽰库⽂件⽬录;“-l”(⼩写l):表⽰链接库...
# 全局Makefile文件 # * ---使用说明--- # 此Makefile执行时有两种模式 # 一、非递归make模式 # 自动编译当前目录下的所有.c文件以并分别链接生成对应的.o文件和可执行文件。 # 给simple_mode赋任意值,然后包含此Makefile文件即可开启此模式。 # 二、递归make模式 # 会在当前目录的所有子目录下分别执行mak...
-l-->指定连接时期望连接的库的名字 -L-->指定连接库的搜索路径 参见LIBS += -Wl,-u,linuxu_app_preinit -lc -lrt -lpthread -ldl -lnlm -lfuse -L $(HPEXEC_INSTALL_DIR)/lib/ 所以hyperexec连接时将优先连接libnlm.a里的实现,,如果在其中找不到实现,再去到newlib和libc中找实现。
同理,-ldl意思就是编译的时候需要链接libdl.so这个库(也有可能是 libdl.a,可能性小)。 -L 制定自定义库的路径,你这里就是/ralink/RT288x_SDK/source/romfs/lib。 所以,我估计,在/ralink/RT288x_SDK/source/romfs/lib这个目录下面应该有个libdl.so的文件。
Makefile错误: /usr/bin/ld:找不到-lsqlite3 这个错误是在编译过程中出现的,提示无法找到名为-lsqlite3的库文件。这通常是由于缺少相应的库文件或库文件路径配置错误导致的。 解决这个问题的方法有以下几种: 确保已安装sqlite3库:首先需要确认系统中已经安装了sqlite3库。可以通过以下命令来检查: ...
pthread自动转换成为libpthread。同理,-ldl意思就是编译的时候需要链接libdl.so这个库(也有可能是 libdl.a,可能性小)。-L 制定自定义库的路径,你这里就是/ralink/RT288x_SDK/source/romfs/lib。所以,我估计,在/ralink/RT288x_SDK/source/romfs/lib这个目录下面应该有个libdl.so的文件。
如果需要用到多个路径时,是每个路径都需要一个-L或者-I选项,每个-L或者-I选项后面分别跟一个路径,各个-L或者-I选项加路径,之间用空格分割。比如:-L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk
编译命令:g++ -lSoTest -L./001 main.cpp -o main,指定了动态库存放的目录,存放在./001中。 但会发生上面那种错误是因为编译时指定了要指定要依赖的动态库,但运行时找不到.so文件。因为运行时,系统是去默认的动态库路径下(/lib和/usr/lib)去找动态库文件,如果找不到就会发生上面那种错误。