如何判断可执行文件是否已针对本机进行编译?
|
我有一些我可以编译并运行的c代码,可以在许多不同的unix计算机(各种linux和mac,有时是其他)上访问的目录中,并且不同的OS \显然需要不同的可执行文件。
我有一个简单的shell脚本,它会调用相应的可执行文件ѭ0,并在必要时首先对其进行编译。这非常简单(尽管需要使用ѭ1才能可靠地定义
$OSTYPE
和$MACHTYPE
),并且几乎可以正常工作。
但是,事实证明,甚至$OSTYPE
和$MACHTYPE
还是不够的:例如,在OSX 10.5上进行编译会生成可执行文件prog.darwin.i386
,当在OSX 10.4上调用该可执行文件时,它会立即崩溃。
是的,每次我要运行该程序时都重新编译是解决此问题的一种方法,但似乎过分了。我知道每台机器上都有一个“ 7”目录是一种标准解决方案,但是非root用户可能在其主目录(这是所有机器通用)之外没有太多写访问权限。
所以我的问题是,有没有更好的方法?编译器(通常是gcc)显然知道它要针对哪种系统进行编译-是否有一种很好的可移植方法来找出我的脚本正在运行的“某种系统”,因此它可以调用正确的可执行文件,而不是行为不确定的人之一?
没有找到相关结果
已邀请:
3 个回复
babsoft
来确定已安装/可运行的gcc认为托管编译的目标是什么(类似于bash中的
) 编辑 如果您确实希望在没有任何特别安装的情况下执行此操作,则可以从gcc(位于任何gcc源软件包的顶级目录中)提取
脚本并运行该脚本。不幸的是,这不适用于所有系统,并且可能与gcc软件包在某些发行版中使用的系统不完全匹配,但这是用于配置gcc以进行构建的脚本,除非您明确覆盖它。
桔马牛
命令
贸会