Почему g ++ неправильно ссылается на обозначенный путь -L? - PullRequest
0 голосов
/ 04 января 2019

Я пробовал команду -L, чтобы изменить поиск компоновщика напрямую, и я даже пробовал оба -Wl, -rpath, / mydir и -Wl, -rpath-link, / mydir, однако g ++ все еще просто ищет в/ USR / бен / л.д..Что я здесь не так делаю?Извините, если что-то явно не так, поскольку я новичок в компиляции без IDE.

Makefile, который я сейчас использую.

    #Makefile for compiling library.
CC       = g++
CURNTDIR = $(shell pwd)
IFLAG    = -I$(CURNTDIR)/include
LFLAG    = -L$(CURNTDIR)/lib
LIBS     = -llibSDLmain -llibSDL2
CXXFLAGS = -Wl,-rpath,$(CURNTDIR)/lib -Wl,-rpath-link,$(CURNTDIR)/lib
objs     = SpiceMain.o SystemHandler.o

SpiceMain: $(objs)
    $(CC) -o $@ $(CXXFLAGS) $(IFLAG) $(LFLAG) $(objs) $(LIBS)

SpiceMain.o: SpiceMain.cpp
    $(CC) -c $(CXXFLAGS) $(IFLAG) $(LFLAG) $? $(LIBS)

SystemHandler.o: SystemHandler.cpp
    $(CC) -c $(CXXFLAGS) $(IFLAG) $(LFLAG) $? $(LIBS)

clean:
    rm $(objs)
    rm SpiceMain

Возвращена ошибка в терминале.

g++ -o SpiceMain -Wl,-rpath,/home/harry/Desktop/programs/spiceengine/lib -Wl,-rpath-link,/home/harry/Desktop/programs/spiceengine/lib -I/home/harry/Desktop/programs/spiceengine/include -L/home/harry/Desktop/programs/spiceengine/lib SpiceMain.o SystemHandler.o -llibSDLmain -llibSDL2
/usr/bin/ld: cannot find -llibSDLmain
/usr/bin/ld: cannot find -llibSDL2
collect2: error: ld returned 1 exit status
make: *** [Makefile:11: SpiceMain] Error 1

Заранее спасибо всем, кто может помочь.

1 Ответ

0 голосов
/ 04 января 2019

Я думаю, вам нужно исключить префикс "lib *" (и суффикс * .so):

-L/my/library/path -lSDLmain -lSDL2
...