找不到-lperl在c上做一个makefile
抱歉我的英语不好……
嗯,我现在是linux,perl和c,但是我必须为大学做一些代码,而且在做makefile时我遇到了一些麻烦. 我在perl中有一个完美运行的代码.同样,我在C中有一个代码,它将perl作为子例程调用.一切都运行正常,但是当我在计算机上执行makefile时,它说: sathlervbn Spam C # make clean; make rm -f *.o g++ -Wall -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/perl/5.14/CORE -c -o main.o main.cpp g++ -L/usr/lib -Wall -Wl,-E -fstack-protector -L/usr/local/lib -L/usr/lib/perl/5.14/CORE - lperl -ldl -lm -lpthread -lc -lcrypt -o main libSpam.a main.o /usr/bin/ld: cannot find -lperl collect2: error: ld returned 1 exit status make: *** [main] Error 1 问题是,当我在教授的计算机上运行makefile时,它的工作原理…… 这是makefile的代码: #CC= /usr/bin/g++ CPP = g++ CPPFLAGS = -Wall $(shell perl -MExtUtils::Embed -e ccopts) #LD= /usr/bin/g++ LD = g++ #LFLAGS = -Wall $(shell perl -MExtUtils::Embed -e ldopts) LFLAGS = -Wall -Wl,-E -fstack-protector -L/usr/local/lib -L/usr/lib/perl/5.14/CORE - lperl -ldl -lm -lpthread -lc -lcrypt MAINOBJS = libSpam.a main.o EMAILS = main EXECS = $(EMAILS) #Regra Implicita: .c.o: $(CPP) $(CPPFLAGS) -c $< all: emails emails: $(EMAILS) main: $(MAINOBJS) $(LD) -L/usr/lib $(LFLAGS) -o $@ $(MAINOBJS) clean: rm -f *.o 有谁知道如何解决它? 解决方法
您需要为C安装perl库.如果您使用的是基于Debian的系统(包括Ubuntu)sudo apt-get install libperl-dev或类似的东西可能就足够了,具体取决于您使用的perl版本.
更新:好的,这有点奇怪 – 我已经安装了perl-base,它安装了/usr/lib/libperl.so.5.14但它没有像你那样创建/usr/lib/libperl.so符号链接期望.我想知道为什么不呢?如果我用ln -s /usr/lib/libperl.so.5.14 /usr/lib/libperl.so手动创建符号链接,它会正确链接. 更新第二个我安装了perl-base,但不是libperl-dev,它给了我/usr/lib/libperl.so.5.14但不是/usr/lib/libperl.so.我怀疑(不确定,但强烈怀疑)正确的答案不是手动制作符号链接,而是安装libperl-dev. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |