7

私の悪い英語でごめんなさい...

さて、私は今、Linux、Perl、および C++ を使用していますが、大学のためにいくつかのコードを作成する必要があり、makefile の実行中に問題が発生しています。

完全に実行されている perl のコードがあります。同様に、perl をサブルーチンとして呼び出す C++ のコードもあります。すべてが正常に機能していますが、コンピューターでメイクファイルを実行すると、次のように表示されます。

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 のコードは次のとおりです。

#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

誰もそれを解決する方法を知っていますか?

4

1 に答える 1