|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
小弟,刚接触makefile,用systemc的一个小程序做实验,编译遇到问题,但用shell脚本编译就不会出现问题,详情如下:
目录下有三个文件:
main.cpp run makefile
cpp文件如下:
#include "systemc.h"
int sc_main(int , char**)
{
cout<<"hello"<<endl;
return 0;
}
run脚本文件如下:
#!/bin/bash
SYSTEMC_HOME="/root/systemc_src/systemc-2.3.0"
g++ main.cpp -I$SYSTEMC_HOME/include -L$SYSTEMC_HOME/lib-linux64 -o hello.x -lsystemc
makefile文件如下:
SYSTEMC = /root/systemc_src/systemc-2.3.0
INCDIR = -I$(SYSTEMC)/include
LIBDIR = -L$(SYSTEMC)/lib-linux64
CC = g++
hello.x : main.cpp
$(CC) main.cpp $(INCDIR) $(LIBDIR) -o $@ -lsystemc
********************* 直接用run脚本编译 成功! *********************************
>>>>>./run
>>>>>ls
hello.x main.cpp makefile run
>>>>>./hello.x
SystemC 2.3.0-ASI --- Apr 11 2013 08:36:32
Copyright (c) 1996-2012 by all Contributors,
ALL RIGHTS RESERVED
hello
>>>>>rm -f hello.x
>>>>>ls
main.cpp makefile run
********************* 用makefile编译 失败! ***********************************
>>>>>ls
main.cpp makefile run
>>>>>make
g++ main.cpp -I/root/systemc_src/systemc-2.3.0/include -L/root/systemc_src/systemc-2.3.0/lib-linux64 -o hello.x -lsystemc
/root/systemc_src/systemc-2.3.0/lib-linux64/libsystemc.so: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make: *** [hello.x] Error 1
systemc.h文件在 目录/root/systemc_src/systemc-2.3.0/include中
目录/root/systemc_src/systemc-2.3.0/lib-linux64中有4个文件,这两个目录都在安装目录下
dellr710c:/root/systemc_src/systemc-2.3.0/lib-linux64>>>>>>ls
libsystemc-2.3.0.so libsystemc.a libsystemc.la libsystemc.so
其中libsystemc.so是个link文件, link target是libsystemc-2.3.0.so
可以看到makefile中的命令和run脚本中的命令是一样的,但为什么makefile会出错呢?
跪求大神解答!谢谢 |
|