我需要为我的项目创建一个makefile,我有两个相互依赖的库,分别是libpcsc.so和libccid.so。
有人可以告诉我我的错误是什么吗?提前感谢您的回答。
请在需要更多信息时告诉我。
我的makefile就像:
<顺便说一下,lib目录之一是/home/hasanbucak/Desktop/pcsc-lite-1.8.23/src/.libs/,其他的是usr / lib / pcsc / drivers / ifd-ccid.bundle /内容/ Linux的/ CC = gcc
LIB_DIRS = -L/home/hasanbucak/Desktop/pcsc-lite-1.8.23/src/.libs/
-L../../usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/
INCLUDE_DIR = /home/hasanbucak/Desktop/ccid-1.4.28/src/ #ccid_usb.h
CFLAGS = -g -Wall
obj-y:= smcard
default: all
all: smcard
smcard:
$(CC) $(CFLAGS) $(LIB_DIRS) -I$(INCLUDE_DIR) -c -o $(obj-y).o $(obj-y).c
$(CC) $(CFLAGS) -lccid -lpcsclite $(LIB_DIRS) -I$(INCLUDE_DIR) -o $(obj-y) $(obj-y).c
clean:
rm $(obj-y).o $(obj-y)
当我在终端写make时,它说:
hasanbucak@ubuntu:~/Desktop/hasan$ make
gcc -g -Wall -L/home/hasanbucak/Desktop/pcsc-lite-1.8.23/src/.libs/ -L../../usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/ -I/home/hasanbucak/Desktop/ccid-1.4.28/src/ -c -o smcard.o smcard.c
gcc -g -Wall -lccid -lpcsclite -L/home/hasanbucak/Desktop/pcsc-lite-1.8.23/src/.libs/ -L../../usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/ -I/home/hasanbucak/Desktop/ccid-1.4.28/src/ -o smcard smcard.c
/usr/bin/ld: cannot find -lccid
collect2: error: ld returned 1 exit status
Makefile:20: recipe for target 'smcard' failed
make: *** [smcard] Error 1
答案 0 :(得分:2)
Make已告诉你Makefile有什么问题:
/usr/bin/ld: cannot find -lccid
您应该正确指定ccid的路径:
LIB_DIRS = -L/home/hasanbucak/Desktop/pcsc-lite-1.8.23/src/.libs/
-L/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/
请注意,/usr
和../../usr
根本不在同一个目录中。
第一个是绝对的(即相对于你的根目录),而第二个是相对的,它扩展为~/Desktop/hasan/../../usr
,相当于/home/hasanbucak/usr
。