我似乎无法让makefile正确运行。我正在按照一个在线Linux教程编译C库。只是寻找它不能正确运行的原因。我得到:
make: libsimple_math.a: Command not found
make:***[all] Error 127.
commands rUN:
gcc -Wall -c simple_math_sqrt.c
gcc -Wall -c simple_math_pow.c
ar libsimple_math.a simple_math_sqrt.o simple_math_pow.o
ranlib libsimple_math.a
gcc -Wall -c mytest.c
gcc -o mytest mytest.o -L. -lsimple_math
收到的错误:
[root@]# make
libsimple_math.a mytest
make: libsimple_math.a: Command not found
make:***[all] Error 127
生成文件:
# Comments start with a # (hash) character like shell scripts.
# Makefile to build libsimple_math.a and mytest program.
# Paul Sheer <psheer@cranzgot.co.za> Sun Mar 19 15:56:08 2000
OBJS = simple_math_sqrt.o simple_math_pow.o
LIBNAME = simple_math
CFLAGS = -Wall
all:
lib$(LIBNAME).a mytest
mytest:
cp mytest /bin/mytest
lib$(LIBNAME).a mytest.o
gcc $(CFLAGS) -o $@ mytest.o -L. -l${LIBNAME}
lib$(LIBNAME).a:
$(OBJS)
rm -f $@
ar rc $@ $(OBJS)
ranlib $@
.c.o:
gcc $(CFLAGS) -c -o $*.o $<
clean:
rm -f *.o *.a mytest
1条答案
按热度按时间e4eetjau1#
你的问题就在这一节:
第二个命令行尝试将库作为命令执行,但(幸运的是)失败了。
我不知道你为什么要把
mytest
复制到/bin
。如果成功了,那就意味着你必须以root
的身份运行--不要!这太容易出错了。或者:/bin
上的权限已损坏-请修复它们(chmod 755 /bin
)。通常,您应该在将新版本复制到目标目录之前构建命令,而不是将旧版本复制到目标目录,然后创建新版本。我将为库文件名创建一个宏:
然后使用来标识库文件名。
您在以下位置也遇到了类似问题(具有类似的修复程序):
修复:
或
注意:我还没有尝试过创建或运行问题中提到的
makefile
,也没有尝试过这个答案中建议的修复。可能还有其他未发现的问题。