linux 下,如何生成一个.o文件,该文件还调用一个.o文件或.a文件,请问该怎么写命令呢?

yannixinxiang 2009-03-24 10:10:55
如题。。
我g++ -c -I//home//user2//proj//include// pinganback.c -o pinganback.o
下面为出错的:
pinganback.c:223: error: elements of array 'dstbackcode dsts [100]' have incomplete type
pinganback.c:223: error: storage size of 'dsts' isn't known
pinganback.c:287: error: 'SLECTBG' was not declared in this scope


原因就是我没有应用,读取配置文件的.o文件,请大侠帮帮忙,该怎么书写
...全文
2174 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
苏岑聪Cencong 2009-05-21
  • 打赏
  • 举报
回复
我也想知道是哪里错了

`
yannixinxiang 2009-03-24
  • 打赏
  • 举报
回复
谢谢各位了。。我现在试试用makefile 试试
Earth_nie 2009-03-24
  • 打赏
  • 举报
回复
aa:aa.o bb.o
g++ -o aa aa.o bb.o
aa.o: aa.c aa.h bb.h
gcc -c aa.c
bb.o: bb.c bb.h
gcc -c bb.c
clean
rm *.o
動態的.o文件是這樣的 靜態的.a文件沒有調用過。可以上網上查看一下 靜態的是怎么調用的。
独孤过儿 2009-03-24
  • 打赏
  • 举报
回复
我现在是要生成一个.o文件,可是,要生成这个.o文件需要调用别个.o文件。。。。。
=========================================
沒這種可能吧?一個.o的文件是relocatable file,只有在link生成Executeable file 或者 Shared library file

的時候,才會與其它的.o文件組合
yannixinxiang 2009-03-24
  • 打赏
  • 举报
回复
我现在是要生成一个.o文件,可是,要生成这个.o文件需要调用别个.o文件。。。。。
也就是说,我现在要生成一个aa.o文件,可是,在aa.c文件中我调用了bb.h文件,bb.h文件与bb.c文件,我生成了一个bb.o文件和bb.a文件
我现在是要把aa.c文件生成aa.o文件。。。。请问我怎么写命令啊?
Earth_nie 2009-03-24
  • 打赏
  • 举报
回复
是啊 單獨編譯成.o 然后可以調用.o文件啊。
main: main.o AT_hander.o
g++ -o main main.o AT_hander.o
main.o: main.c AT_hander.h receive_back.h
g++ -c main.c
AT_hander.o: AT_hander.cpp AT_hander.h
g++ -c AT_hander.cpp
clean
rm *.o
我才學不久,這是我的makefile文件。 看看對你有幫助沒有
yannixinxiang 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fetag 的回复:]
# g++ -c -o pinganback.o pinganback.c

試試看,鏈結的步驟不是在編譯的步驟完成的,所以不用管對其餘.o和.a的調用
[/Quote]


我是要生成一个.o文件,只是要生成的这个文件还要调用其他.o文件。。
yannixinxiang 2009-03-24
  • 打赏
  • 举报
回复
makefile ..本人还在学习中,难道,makefile 要省很多事吗?具我理解,也应该先生成 .o文件吧。。
Earth_nie 2009-03-24
  • 打赏
  • 举报
回复
怎么不用makefile呢?
独孤过儿 2009-03-24
  • 打赏
  • 举报
回复
# g++ -c -o pinganback.o pinganback.c

試試看,鏈結的步驟不是在編譯的步驟完成的,所以不用管對其餘.o和.a的調用
yannixinxiang 2009-03-24
  • 打赏
  • 举报
回复
顶。。。。
yannixinxiang 2009-03-24
  • 打赏
  • 举报
回复
这句话我知道那里错了。。。是引用中少了一些宏定义。。知道怎么改正
无知者无谓 2009-03-24
  • 打赏
  • 举报
回复
主要问题是这句
pinganback.c:287: error: 'SLECTBG' was not declared in this scope
跟Makefile一点关系没有
interfish520 2009-03-24
  • 打赏
  • 举报
回复
首先由.c编译成.o只要-c选项即可.(表示经过预编译,编译,汇编处理,不经过连接)
[/home/ucsrc/fish] cat sub.c
int sub(int i,int j)
{
return i-j;
}
[/home/ucsrc/fish] ls
add.c main.c sub.c
[/home/ucsrc/fish] cc -c sub.c
[/home/ucsrc/fish] ls
add.c main.c sub.c sub.o

再生成静态库.实际上由多个.o文件打包而成的.
[/home/ucsrc/fish] ar r libsub.a sub.o
ar: creating libsub.a
[/home/ucsrc/fish] ls
add.c libsub.a main.c sub.c sub.o
[/home/ucsrc/fish]
现在由main.c调用.o文件里面的函数.
[/home/ucsrc/fish] cat main.c
#include <stdio.h>

int main()
{
printf("%d\n",sub(10,20));
return 0;
}
[/home/ucsrc/fish] cc -o main main.c libsub.a
[/home/ucsrc/fish] ./main
-10
[/home/ucsrc/fish]

如果按楼主所言,是.o中调用另外一个.o只要把main.c编译成.o即可,不过这样程序的独立性不够强.
至于makefile,大可不必.就几个指令即可实现了.
无知者无谓 2009-03-24
  • 打赏
  • 举报
回复
代码的include不全

23,126

社区成员

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

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