gpt4 book ai didi

找不到自定义目录中的 C++ 共享库

转载 作者:行者123 更新时间:2023-11-30 03:43:46 24 4
gpt4 key购买 nike

我想将共享库(驻留在自定义目录中)用于可执行文件。

我已经创建了这个ma​​kefile

all: SayHello

SayHello: compiledObjects/SayHello.o myLib/libNames.so
g++ compiledObjects/SayHello.o -o SayHello -Icommons -LmyLib -lNames


compiledObjects/SayHello.o: SayHello.cpp
g++ -c SayHello.cpp -o compiledObjects/SayHello.o

myLib/libNames.so: commons/Names.cpp commons/Names.h
g++ -shared -fPIC commons/Names.cpp -o myLib/libNames.so

正确创建可执行文件和共享库事实上我可以使用此命令执行程序

LD_LIBRARY_PATH=/custom/path/to/lib/myLib/libNames.so
./SayHello

如何在不指定 LD_LIBRARY_PATH 的情况下执行 ./SayHello

我没有使用任何 IDE,我在 linux 上。

最佳答案

使用 -rpath 选项链接您的可执行文件。有关详细信息,请参阅 ld(1) 手册页。

附言您的 makefile 似乎有错误。如果您成功 make 您的程序,并立即再次运行 make,看起来您的 makefile 将尝试再次重新编译该程序,即使没有任何更改。

毕竟,makefile 的全部目的是避免进行不必要的编译。

SayHello.o 构建目标应该是 compiledObjects/SayHello.o

关于找不到自定义目录中的 C++ 共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35891016/

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