【问题标题】:how to specify path to usr/lib of a specific machine in makefile?如何在makefile中指定特定机器的usr/lib路径?
【发布时间】:2011-03-20 22:32:36
【问题描述】:

我正在使用安装在本地机器上的 /usr/lib/ 目录中的一些库。我想在安装了相同库但其他版本的另一台机器上运行我的程序。如何指定程序在另一台机器上运行但库是从我的计算机上使用的路径?

谢谢

【问题讨论】:

  • 这基本上是 ./configure 脚本的工作
  • 有问题的库是共享的还是静态的?
  • 我觉得这个问题很不清楚。您是否在您的机器上编译并部署二进制文件?或者是关于在另一台机器上配置编译的问题?
  • 这些库是共享的...我正在我的机器上编译,然后通过从我的机器连接在另一台机器上运行。我希望它变得有点清楚。
  • 我使用 ssh 连接到远程机器,然后在那里运行程序...

标签: c++ gcc makefile


【解决方案1】:

Secure shell 不提供在源机器上查找二进制文件和库并在远程机器上运行它们的服务(或者实际上相反)。

需要部署可执行文件。

我建议:

  1. 在您的家用计算机上编译,静态地链接所需的库。静态链接至关重要。您可能需要阅读编译器文档才能做到这一点。
  2. 将生成的二进制文件复制到远程计算机(可能使用scp)。
  3. SSH 到远程机器并调用静态链接的二进制文件。
  4. ???
  5. 利润。

当然,这只有在两台机器共享处理器架构和通用可执行格式时才有效。这意味着,linux-to-linux 工作,而 linux-to-some-other-unixy-OS 可能工作(尝试 a.out 可执行格式),并且linux-to-windows 当然不会工作。

【讨论】:

    【解决方案2】:

    为了实现这一点,你的机器应该连接到一个应该连接到所有其他机器的网络。在你的脚本中,你可以指定从哪里获取库,比如 /usr/lib... . 而不是先给出你的 IP 地址并附加 /Machintosh HD/usr/lib...即如果你的 IP 地址是 192.168.2.4,那么不要给出 /usr/lib,而是给出

    //192.168.2.7/Machintosh HD/usr/lib/codeorlibraryfile

    如果你没有连接到网络,否则这将不起作用,否则我看不出它不起作用的原因...检查“//”,我不确定在开始时是否会出现“\”或“//”。 .

    希望对你有帮助

    【讨论】:

    • 当您使用 ssh 登录时它不起作用......它只在本地机器上搜索,在我的例子中是远程机器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    相关资源
    最近更新 更多