【问题标题】:how do I link another library in makefile如何在makefile中链接另一个库
【发布时间】:2013-11-24 23:53:17
【问题描述】:

我的makefile(不是我写的)如下

        SOURCES = $(wildcard *.cpp)
OBJECTS = $(SOURCES:.cpp=.o)
DEPENDS = $(SOURCES:.cpp=.d)
LDFLAGS = $(shell pkg-config --libs gtkmm-2.4 gtkglextmm-1.2 lua5.1) -llua5.1
CPPFLAGS = $(shell pkg-config --cflags gtkmm-2.4 gtkglextmm-1.2 lua5.1)
CXXFLAGS = $(CPPFLAGS) -W -Wall -g
CXX = g++
MAIN = game

all: $(MAIN)

depend: $(DEPENDS)

clean:
    rm -f *.o *.d $(MAIN)

$(MAIN): $(OBJECTS)
    @echo Creating $@...
    @$(CXX) -o $@ $(OBJECTS) $(LDFLAGS) 

%.o: %.cpp
    @echo Compiling $<...
    @$(CXX) -o $@ -c $(CXXFLAGS) $<

%.d: %.cpp
    @echo Building $@...
    @set -e; $(CC) -M $(CPPFLAGS) $< \
                  | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
                [ -s $@ ] || rm -f $@

include $(DEPENDS)

现在我想链接当前目录中的 libfmodex.so,我尝试使用 -L 将它放在代码中的某个位置。 libfmodex.so,但是 gcc 说 g++: error: libfmodex.so: No such file or directory,但我知道它在当前目录中,我该如何链接呢?

【问题讨论】:

    标签: dll build makefile shared-libraries


    【解决方案1】:

    添加到LDFLAGS 变量,例如:-L. -lfmodex

    【讨论】:

    • /usr/bin/ld: 找不到-lfmodex
    • 为什么它在 /usr/bin/ld 文件夹中搜索我的 .so 文件而不是我当前的文件夹?
    • @user961936:这不是错误的意思。这意味着位于/usr/bin的程序ld找不到.so文件。
    • 您已将此问题标记为已回答。你还有问题吗?还是不行?
    • 问题已解决,您的解决方案加上 export LD_LIBRARY_PATH="/path/to/library/"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    相关资源
    最近更新 更多