对 linux C 编程 makefile书写的疑问(三)
下面是一个makefile:
CC=gcc
CFLAGS= -Iinclude -Wall -g -DDEBUG
LDFLAGS=-L./lib -Wl,-rpath=./lib -Wl,-rpath=/usr/local/lib
myapp: main.o test1.o test2.o test3.o test4.o test5.o
$(CC) -o $@ $(LDFLAGS) $^ -ldl
clean:
rm -rf *.o myapp
几点疑问:
1.LDFLAGS=-L./lib -Wl,-rpath=./lib -Wl,-rpath=/usr/local/lib
求高手帮解释一下 -Wl干什么用的?
2.$(CC) -o $@ $(LDFLAGS) $^ -ldl
$(LDFLAGS)是库文件的位置,-ldl是具体的库的名字, 对(LDFLAGS) 和 -ldl之间存在$^有些不解,不是不知$^是什么,知道$^是依赖目标,而是对$(LDFLAGS) $^ -ldl的排列顺序有些疑问,求解释一下makefile命令的具体命令规则顺序是怎样写的,举个例子:就是$(CC) -o $@ $(LDFLAGS) $^ -ldl
是按什么要求进行排列的?
求具体的排列顺序的方法。
初学linux,处处不懂。
以上两点希望有经验的人士帮解决一下!
CC=gcc
CFLAGS= -Iinclude -Wall -g -DDEBUG
LDFLAGS=-L./lib -Wl,-rpath=./lib -Wl,-rpath=/usr/local/lib
myapp: main.o test1.o test2.o test3.o test4.o test5.o
$(CC) -o $@ $(LDFLAGS) $^ -ldl
clean:
rm -rf *.o myapp
几点疑问:
1.LDFLAGS=-L./lib -Wl,-rpath=./lib -Wl,-rpath=/usr/local/lib
求高手帮解释一下 -Wl干什么用的?
2.$(CC) -o $@ $(LDFLAGS) $^ -ldl
$(LDFLAGS)是库文件的位置,-ldl是具体的库的名字, 对(LDFLAGS) 和 -ldl之间存在$^有些不解,不是不知$^是什么,知道$^是依赖目标,而是对$(LDFLAGS) $^ -ldl的排列顺序有些疑问,求解释一下makefile命令的具体命令规则顺序是怎样写的,举个例子:就是$(CC) -o $@ $(LDFLAGS) $^ -ldl
是按什么要求进行排列的?
求具体的排列顺序的方法。
初学linux,处处不懂。
以上两点希望有经验的人士帮解决一下!
作者: feilongzafei 发布时间: 2011-02-13
有些书上说链接标志(LDFLAGS)要放到最后比较好。
最具体的只有去看官方的manual了。
最具体的只有去看官方的manual了。
作者: subfate 发布时间: 2011-02-13
引用 1 楼 subfate 的回复:
有些书上说链接标志(LDFLAGS)要放到最后比较好。
最具体的只有去看官方的manual了。
有些书上说链接标志(LDFLAGS)要放到最后比较好。
最具体的只有去看官方的manual了。
请问官方的manual去哪里查看?
作者: feilongzafei 发布时间: 2011-02-13