我已经在我的 mac(主机)上从源代码编译了 OCaml,我没有问题。我还在我的mac上为某些目标(不同于主机)交叉编译了OCaml,在这种情况下我有以下问题:
1)我可以直接使用(在目标上)ocamlrun
,ocamlyacc
因为它们是“纯”二进制文件,没有问题,就像在主机上一样。如果我想使用$INSTALL/bin
(是目标上$INSTALL
的安装目录)中的其他二进制文件,我有错误告诉我路径错误。实际上,如果我使用十六进制编辑器打开二进制文件,我会看到它以路径开头,其中路径是我在其上进行交叉构建的主机(我的 mac)上的路径,而不是其目标版本的路径。 ..当然,如果我用目标上的路径替换这条路径,则无需再做,一切都很好。对于来自和的所有其他二进制文件相同ocaml
ocamlopt
ocamlrun
ocamlopt
#!/not/target/but/host/path/to/ocamlrun
ocamlrun
configure
ocamlrun ocamlopt
$INSTALL/bin
ocamlrun
ocamlyacc
放在一边。(最后两个确实可以直接工作,正如我上面写的那样。)有没有办法configure
(在主机上)ocaml
交叉构建,以便ocamlrun
目标上的正确路径直接出现在二进制文件的开头$INSTALL/bin
?
2)如果不需要通过标志指定$INSTALL/lib/ocaml
目录,我就无法编译代码。-I
有没有办法强制这个标准库路径在configure
?或者任何ocaml
处理它的“内部”环境变量,我可以编辑以确保ocaml
会在其中查找库$INSTALL/lib/ocaml
?(我对环境变量解决方案非常悲观,因为在主机上我只有两个环境变量(at printenv
),ocaml
而且似乎没有人处理这种东西,所以我不明白为什么它会变得不同/更好在目标上……)