当前位置: 技术问答>linux和unix
Leaving directory是什么错误?
来源: 互联网 发布时间:2015-12-15
本文导语: make程序出现一下错误。希望能给点什么提示: 这种linux下的gcc编译器是报错格式是怎么的。也就是哪些是编译错误提示,哪些是make输出。 另外下面好像有:Leaving directory 和undefined referen ce to `___moddi3',collect2: ld...
make程序出现一下错误。希望能给点什么提示:
这种linux下的gcc编译器是报错格式是怎么的。也就是哪些是编译错误提示,哪些是make输出。
另外下面好像有:Leaving directory 和undefined referen
ce to `___moddi3',collect2: ld returned 1 exit status
请大家帮个忙?
*********************************************************************
gcc -c -I../tracer ram.c
make[2]: Leaving directory `/usr/src/skyeye-v1/arch/coldfire/common'
make[1]: Leaving directory `/usr/src/skyeye-v1/arch/coldfire'
ar rc binary/libcoldfire.a binary/cf_arch_interface.o arch/coldfire/common//*.o
arch/coldfire//tracer/tracer.o arch/coldfire//i_5206/i.o
ranlib binary/libcoldfire.a
gcc -g -DSTANDALONE -DDEFAULT_INLINE=0 -DMODET -DMODET -I arch/arm -I arch/a
rm/common/ -I arch/arm/common/mmu/ -I arch/arm/mach/ -I arch/bfin/common -I arch
/bfin/mach -I arch/coldfire/common -I device/ -I device/net -I device/lcd -I dev
ice/flash -I utils/share -I utils/main -I utils/config -I utils/debugger -DARM
-I. -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/us
r/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/inclu
de/glib-2.0 -I/usr/lib/glib-2.0/include -o binary/skyeye binary/skyeye.o --sta
rt-group -Lbinary -lutils -larm -ldev -lbfin -lcoldfire -lc -lbfd -liberty -lin
tl -liconv --end-group `pkg-config gtk+-2.0 --libs`
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libbfd.a(elf32.o):: undefined referen
ce to `___moddi3'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libbfd.a(elf.o):: undefined reference
to `___umoddi3'
collect2: ld returned 1 exit status
make: *** [binary/skyeye] Error 1
YOYO@renwei /usr/src/skyeye-v1
$
YOYO@renwei /usr/src/skyeye-v1
这种linux下的gcc编译器是报错格式是怎么的。也就是哪些是编译错误提示,哪些是make输出。
另外下面好像有:Leaving directory 和undefined referen
ce to `___moddi3',collect2: ld returned 1 exit status
请大家帮个忙?
*********************************************************************
gcc -c -I../tracer ram.c
make[2]: Leaving directory `/usr/src/skyeye-v1/arch/coldfire/common'
make[1]: Leaving directory `/usr/src/skyeye-v1/arch/coldfire'
ar rc binary/libcoldfire.a binary/cf_arch_interface.o arch/coldfire/common//*.o
arch/coldfire//tracer/tracer.o arch/coldfire//i_5206/i.o
ranlib binary/libcoldfire.a
gcc -g -DSTANDALONE -DDEFAULT_INLINE=0 -DMODET -DMODET -I arch/arm -I arch/a
rm/common/ -I arch/arm/common/mmu/ -I arch/arm/mach/ -I arch/bfin/common -I arch
/bfin/mach -I arch/coldfire/common -I device/ -I device/net -I device/lcd -I dev
ice/flash -I utils/share -I utils/main -I utils/config -I utils/debugger -DARM
-I. -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/us
r/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/inclu
de/glib-2.0 -I/usr/lib/glib-2.0/include -o binary/skyeye binary/skyeye.o --sta
rt-group -Lbinary -lutils -larm -ldev -lbfin -lcoldfire -lc -lbfd -liberty -lin
tl -liconv --end-group `pkg-config gtk+-2.0 --libs`
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libbfd.a(elf32.o):: undefined referen
ce to `___moddi3'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libbfd.a(elf.o):: undefined reference
to `___umoddi3'
collect2: ld returned 1 exit status
make: *** [binary/skyeye] Error 1
YOYO@renwei /usr/src/skyeye-v1
$
YOYO@renwei /usr/src/skyeye-v1
|
给你贴一个我以前写的帖子,你可以参考参考。
一行就可以的Makefile
hello:
因为make足够聪明,它会自动把所有hello.c/hello.cpp/hello.o作为输入,并调用正确的编译器/连接器,这叫做隐含规则
如果写多一点,但不通用,像这样
hello:hello.c
$(CC) hello.c -o hello #键必须
如果写完整一点,稍微有点功能,支持大一点的项目 像这样
CC=gcc
LD=ld
CFLAGS=-g -Wall #你想编译调试版(有调试符号),显示所有警告
LDFLAGS=-lc -lm #你链接c函数库,数学函数库
srcfiles:= $(wildcard *.c) #生成当前目录c源文件列表,用空格分隔
header:=$(wildcard *.h) #生成生成当前目录h头文件列表,用空格分隔
objects:= $(patsubst %.c,%.o,$(srcfiles)) #从源文件列表生成目标文件列表(通过替换扩展名)
$(objects):$(header)
$(CC) -c $(srcfiles) # 键必须 ,仅仅编译目标文件
hello:$(objects)
$(CC) -c $(objects) # 键必须 ,仅仅连接产生输出文件
all:hello $(objects)
$(CC) -c $(objects) # 键必须 ,做所有的事情
clean:
rm -rc $(objects) hello
一行就可以的Makefile
hello:
因为make足够聪明,它会自动把所有hello.c/hello.cpp/hello.o作为输入,并调用正确的编译器/连接器,这叫做隐含规则
如果写多一点,但不通用,像这样
hello:hello.c
$(CC) hello.c -o hello #键必须
如果写完整一点,稍微有点功能,支持大一点的项目 像这样
CC=gcc
LD=ld
CFLAGS=-g -Wall #你想编译调试版(有调试符号),显示所有警告
LDFLAGS=-lc -lm #你链接c函数库,数学函数库
srcfiles:= $(wildcard *.c) #生成当前目录c源文件列表,用空格分隔
header:=$(wildcard *.h) #生成生成当前目录h头文件列表,用空格分隔
objects:= $(patsubst %.c,%.o,$(srcfiles)) #从源文件列表生成目标文件列表(通过替换扩展名)
$(objects):$(header)
$(CC) -c $(srcfiles) # 键必须 ,仅仅编译目标文件
hello:$(objects)
$(CC) -c $(objects) # 键必须 ,仅仅连接产生输出文件
all:hello $(objects)
$(CC) -c $(objects) # 键必须 ,做所有的事情
clean:
rm -rc $(objects) hello
|
你的错是在这里:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libbfd.a(elf32.o):: undefined referen
ce to `___moddi3'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libbfd.a(elf.o):: undefined reference
to `___umoddi3'
你是在编译什么程序,自己写的? 感觉你的系统缺少库
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libbfd.a(elf32.o):: undefined referen
ce to `___moddi3'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libbfd.a(elf.o):: undefined reference
to `___umoddi3'
你是在编译什么程序,自己写的? 感觉你的系统缺少库
|
错误不在那里。
好像是编译参数错了,也不知道你在编译什么。
好像是编译参数错了,也不知道你在编译什么。
|
要学makefile,网上有一篇《和我一起写Makefile》,非常好。推荐!
|
遇到undefined reference,一般是库有问题。而Leaving directory不是错误。一般写makefile的时候,会cd到某个文件夹,再执行一些命令,这样的话,就会出现Leaving directory的信息