gpt4 book ai didi

c++ - LIBPATHS 未在 Makefile 中使用,无法找到共享对象

转载 作者:太空狗 更新时间:2023-10-29 20:48:50 25 4
gpt4 key购买 nike

我无法正确链接示例程序(在本例中是针对 ICU 库)。当我“制作”时,一切都很好。但是当我运行它时,它说找不到其中一个 .so。我仔细检查了它们都安装在/usr/local/lib 中。我发现它在/usr/lib 中查找。如果我从那里符号链接(symbolic link)到那里的实际位置,它就可以工作。

为什么我的 LIBPATHS 被忽略或未被使用?

这是生成文件

CC = g++

INCPATHS = -I/usr/local/include

CFLAGS = -c -Wall $(INCPATHS)

LIBPATHS = -L/usr/local/lib/
LIBS = $(LIBPATHS) -licuio -licui18n -licuuc -licuio -licudata

EXECUTABLE = prog

print_linking = echo -e "\033[32m" "Linking: $<" "\033[39m"
print_compiling = echo -e "\033[33m" "Compiling: $<" "\033[39m"
print_cleaning = echo -e "\033[31m" "Cleaning: `pwd`" "\033[39m"


all: main

# [target]: [dependencies]
# <tab> system command
main: main.o
@$(print_linking)
@$(CC) -o $(EXECUTABLE) main.o $(LIBS) >> /dev/null

main.o: main.cpp
@$(print_compiling)
@$(CC) $(CFLAGS) main.cpp

clean:
@$(print_cleaning)
@rm -rf *.o *~ $(EXECUTABLE)

最佳答案

您的 LIBPATHS 告诉链接器在链接以解析符号时在哪里可以找到库。

在运行时,您需要告诉加载程序在哪里可以找到库。它不知道编译时发生了什么。您可以使用上面提到的 LD_LIBRARY_PATH 变量,或者查看 /etc/ld.so.conf 和它的 friend 。

关于c++ - LIBPATHS 未在 Makefile 中使用,无法找到共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2426720/

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