在Makefile中,`-I`和`-L`是两个不同的参数,它们分别用于指定头文件和库文件的搜索路径。 `-I`参数用于指定头文件的搜索路径,即编译器在编译源代码时,会在指定的路径中查找头文件。例如,...
“-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...
“-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/...
在makefile中使用“-l”选项可以告诉编译器链接某个库文件。在Linux系统中,库文件通常以“.a”或“.so”结尾。通过指定“-l”选项加上库文件的名称,编译器就能够找到并链接该库文件,从而使得程序能够调用该库中的函数和符号。例如,如果我们想要链接一个名为“mylib”的库文件,我们可以在makefile中使用如下命令:...
当然也可以不使用-L -l等选项,直接使用lib全称: 之后生成的a.out就可以使用了。 这里之所以提到-L和-l参数,原因是在写makefile时,-L和-l会带来更多的便利。 以上是一个简单的例子。 也可以写一个makefile文件来做这个,下面是一个makefile的例子: ...
如果需要用到多个路径时,是每个路径都需要一个-L或者-I选项,每个-L或者-I选项后面分别跟一个路径,各个-L或者-I选项加路径,之间用空格分割。比如:-L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk
而"fl"对应的是libfl.a的库。(GNU make 可以识别这样的命令,当一个prerequisite是以这种-l<name>的形式表示出来的时候,make会自己搜索lib<name>.so的库文件,如果没找到则继续搜索lib<name>.a的库文件)。这里make找到的是/usr/lib/libfl.a文件,并将它与程序进行连接。
编译命令:g++ -lSoTest -L./001 main.cpp -o main,指定了动态库存放的目录,存放在./001中。 但会发生上面那种错误是因为编译时指定了要指定要依赖的动态库,但运行时找不到.so文件。因为运行时,系统是去默认的动态库路径下(/lib和/usr/lib)去找动态库文件,如果找不到就会发生上面那种错误。
例如:#drivers/isdn/i4l/Makefile obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o 注意:在这个例子中$(CONFIG_ISDN_PPP_BSDCOMP)含义是'm'。 假如内核模块通过几个源文档编译而成,使用以上同样的方法。 Kbuild需要知道通过哪些文档编译模块,因此需要配置一个$(-objs)变量。 例如:#drivers/isdn/i4l/Ma...
当你不指定make的目标,也就是光输入make,那么它默认只构建第一个目标,也就是l2.o 所以你应该在makefile最开始的地方加一句:all: l1.o l2.o l3.o 这种方法还是不够好,建议另一种方法,也就是%规则:OBJS:=l1.o l2.o l3.o all: $(OBJS).o: %.c gcc -c $< -o 注意上一行...