可以在 OSX 上使用 g++ 在 makefile 中修改 @rpath 吗?

问题描述 投票:0回答:1

我正在尝试动态链接到 OSX 应用程序中的自定义动态库。由于各种原因,我不想在构建后指定环境变量。我希望我的构建环境能够提供运行应用程序所需的一切。

我正在使用 makefile 使用 gcc 编译应用程序(实际上,我是一个调用 qmake 并进行一些自动编辑的脚本。)。在 Linux 上我会这样做:

-Wl,-rpath,<path/to/dynamic/library>

但无论出于何种原因,OSX 并不遵守这些规则。我不断得到

@rpath/mylib.dylib Library not loaded

当我尝试运行该应用程序时。

我希望这是清楚的。我希望应用程序本身知道在哪里寻找

mylib.dylib
。我知道如何在 Xcode 中使用 LLVM 执行此操作,但如果我也可以使用 makefile 和 gcc 执行此操作,那就太好了。我不想为像这样的简单小应用程序设置整个 Xcode 项目(我需要将其中的许多应用程序链接到我的库)。 Qmake等就方便多了。

macos gcc makefile dynamic-linking
1个回答
0
投票

我对项目目录之外的 SFML 库做了类似的事情,它对我有用。

CC = g++
INC_PATH = ./inc
LIB_PATH = ./../SFML/build/lib
LIBS = -lsfml-graphics -lsfml-window
CFLAGS = -std=c++17

all:
    $(CC) $(CFLAGS) main.cpp -I$(INC_PATH) -o executable -L$(LIB_PATH) $(LIBS)
    install_name_tool -add_rpath @executable_path/../SFML/build/lib executable
© www.soinside.com 2019 - 2024. All rights reserved.