最近想把程序改用makefile编译,但不知道如何在makefile里面引用动态库

IceChan 2007-01-16 09:05:35
请教大家了,makefile如下

我的main.cpp用到了另外一个动态库,不知道怎么把库编译进去,在依赖的时候加上动态库的头文件就可以了吗??

OBJECTS = hello.o main.o
TARGET = main

main: main.o hello.o
g++ main.o hello.o -o main
main.o: main.cpp
g++ -c main.cpp -o main.o
hello.o: hello.cpp hello.h
g++ -c hello.cpp -o hello.o
...全文
846 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinayangbo2011 2012-02-28
  • 打赏
  • 举报
回复
makefile好难啊
IceChan 2007-01-24
  • 打赏
  • 举报
回复
(1)zzw_happy(蒹葭苍苍) 说和头文件的依赖会自动产生
为什么我修改了我的头文件,执行make的时候发现,并不会重新编译
我的makefile如下
main: main.o hello.o
g++ main.o hello.o -o main -lACE
main.o: main.cpp
g++ -c main.cpp
hello.o: hello.cpp
g++ -c hello.cpp -I./ACE_wrappers

(2)blueoceanli(谋定而动)

main: main.o hello.o
$(CC) -lname你的库的名字前面的-l保留 -o $@ $^ -Wl,-rpath=/usr/local/lib你的库文件所在的路径
-Wl,-rpath 这个中间需要“,”吗?? 谢谢

大侠help一下拉,对头文件的依赖怎么搞??
magicchen 2007-01-23
  • 打赏
  • 举报
回复
靠,这个man一下gcc就知道了。makefile不过是一个以一定规则堆积起来的特殊脚本。既然是脚本,就可以直接写命令。
IceChan 2007-01-23
  • 打赏
  • 举报
回复
顶一下
IceChan 2007-01-22
  • 打赏
  • 举报
回复
(1)zzw_happy(蒹葭苍苍) 说和头文件的依赖会自动产生
为什么我修改了我的头文件,执行make的时候发现,并不会重新编译
我的makefile如下
main: main.o hello.o
g++ main.o hello.o -o main -lACE
main.o: main.cpp
g++ -c main.cpp
hello.o: hello.cpp
g++ -c hello.cpp -I./ACE_wrappers

(2)blueoceanli(谋定而动)

main: main.o hello.o
$(CC) -lname你的库的名字前面的-l保留 -o $@ $^ -Wl,-rpath=/usr/local/lib你的库文件所在的路径
-Wl,-rpath 这个中间需要“,”吗?? 谢谢
IceChan 2007-01-22
  • 打赏
  • 举报
回复
#include "hello.h"
#include "ace/ACE.h"
int hello::sayHello(int a)
{

hello1 h2;
h2.sayHello(2);
std::cout << "hello world" << std::endl;
return 0;
}

执行 g++ -c hello.cpp -I./ACE_wrappers

有很多错误,有没有人用过ACE没有,指导一下 (./ACE_wrappers路径存在)
另外,ACE需要安装吗,不是说只要有头文件和libACE.so就可以了把。。
blueoceanli 2007-01-16
  • 打赏
  • 举报
回复
CC = g++
CFLAGS = -Wall -c
IFLAGS = -I../include

main: main.o hello.o
$(CC) -lname你的库的名字前面的-l保留 -o $@ $^ -Wl,-rpath=/usr/local/lib你的库文件所在的路径

main.o: main.cpp
$(CC) $(CFLAGS) $< $(IFLAGS)

hello.o: hello.cpp
$(CC_ARM) $(CFLAGS) $< $(IFLAGS)

clean:
rm *.o -f
#注中文部分去掉
zzw_happy 2007-01-16
  • 打赏
  • 举报
回复
OBJECTS = hello.o main.o
TARGET = main

main: main.o hello.o
g++ main.o hello.o -o main -lxxx
main.o: main.cpp
g++ -c main.cpp -o main.o
hello.o: hello.cpp hello.h
g++ -c hello.cpp -o hello.o

---
xxx是你的库名字,如果文件名为libxxx.a就写-lxxx,不要前面的lib和后面的.a
顺便说一下,你的makefile写的太烂了。c/cpp -> o 映射是缺省的,和头文件的依赖也可以自动产生。
好好学一下makefile把。它可是c++的必备条件。
hyg2008 2007-01-16
  • 打赏
  • 举报
回复
正在学makefile

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧