Linux替代_NSGetExecutablePath?

是否有可能在Ubuntu Linux上代替_NSGetExecutablePath来代替非Apple特定的方法?

我想在Ubuntu上编译下面的代码: https : //github.com/Bohdan-Khomtchouk/HeatmapGenerator/blob/master/HeatmapGenerator2_Macintosh_OSX.cxx

根据以前的问题,我问: 致命的错误:mach-o / dyld.h:没有这样的文件或目录 ,我决定注释掉第52行,想知道是否有一个通用的跨平台(非苹果具体)我可以以非Apple特定的方式重写第567行的代码块( _NSGetExecutablePath块)。

Alen Stojanov的答案以编程方式检索OS X命令行应用程序的绝对path,以及如何确定当前正在运行的可执行文件的完整path? 给了我一些关于从哪里开始的想法,但是我想在这之前确定我是在正确的轨道上。

有没有办法修改_NSGetExecutablePath与Ubuntu Linux兼容?

目前,我遇到以下编译器错误:

 HeatmapGenerator_Macintosh_OSX.cxx:568:13: error: use of undeclared identifier '_NSGetExecutablePath' if (_NSGetExecutablePath(path, &size) == 0) 

基本概念如何以POSIX系统应该可移植的方式进行:

 #define _XOPEN_SOURCE 500 #include <stdio.h> #include <limits.h> #include <stdlib.h> static char *path; const char *appPath(void) { return path; } static void cleanup() { free(path); } int main(int argc, char **argv) { path = realpath(argv[0], 0); if (!path) { perror("realpath"); return 1; } atexit(&cleanup); printf("App path: %s\n", appPath()); return 0; } 

您可以为它定义一个自己的模块,只需传递它argv[0]appPath()导出appPath()函数。

编辑 :通过访问器方法替换导出的变量