gpt4 book ai didi

c++ - (C++) glibmm 不会在 Ubuntu/Oneiric 上链接

转载 作者:行者123 更新时间:2023-11-30 04:30:00 25 4
gpt4 key购买 nike

我在 Ubuntu/Oneiric 上运行最简单的程序时遇到问题:

#include <glibmm/ustring.h>

int main()
{
Glib::ustring s = "Test string";
}

使用生成文件

PACKAGES=glibmm-2.4 glib-2.0 gtkmm-3.0 gtk+-3.0
CC=g++
CFLAGS=`pkg-config --cflags $(PACKAGES)` --std=c++0x
LD=g++
LDFLAGS=`pkg-config --libs $(PACKAGES)`

build: ./main

run: build
./main

clean:
rm ./main.o

rebuild: clean build

./main: ./main.o
$(LD) $(LDFLAGS) ./main.o -o ./main

./main.o: ./main.cc
$(CC) $(CFLAGS) ./main.cc -c -o ./main.o

make 出现以下错误:

./main.o: In function `main':
main.cc:(.text+0x15): undefined reference to `Glib::ustring::ustring(char const*)'
main.cc:(.text+0x21): undefined reference to `Glib::ustring::~ustring()'
collect2: ld returned 1 exit status
make: *** [main] Error 1

在 Ubuntu/Maverick 上,完全相同的代码可以很好地链接到完全相同的文件...如果在 main.o 上使用 ld,它也可以成功链接,但是(如预期的那样)缺少 _start...

有什么建议吗?

最佳答案

尝试将相关行更改为:

LDFLAGS=`pkg-config --libs-only-L --libs-only-other $(PACKAGES)`
LIBS=`pkg-config --libs-only-l $(PACKAGES)`

# ...

./main: ./main.o
$(LD) $(LDFLAGS) ./main.o -o ./main $(LIBS)

原因是链接器可能会按照命令行中给出的顺序搜索库,因此为了安全起见,它们应该始终放在最后。

关于c++ - (C++) glibmm 不会在 Ubuntu/Oneiric 上链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8989235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com