【问题标题】:How to set linux application as "global" avaliable in OS?如何将 linux 应用程序设置为操作系统中可用的“全局”?
【发布时间】:2020-02-06 16:22:08
【问题描述】:

我在 CentOS 下运行 C 应用程序

我需要设置为全局。我写了一个函数来“设置全局”。它正在工作,但我需要另一种解决方案。

编译器是gcc

void set_global(void) {
    /*Function to set program_name as global application.*/
    puts(ANSI_COLOR_RED"WARINING! ROOT PERMISSION OR ADMINISTRATOR NEED!"ANSI_COLOR_RESET);
    puts("Set "ANSI_COLOR_GREEN"program_name "ANSI_COLOR_RESET" as global application.");
    system("sudo rm -rf /usr/bin/program_name ");
    system("sudo cp -r program_name /usr/bin");
    system("export PATH=\"/usr/bin:$PATH\"");
    system("sudo chmod 755 /usr/bin/program_name ");
    system("sudo rm -rf /usr/bin/geo.txt");
    system("sudo rm -rf /usr/bin/points.txt");
    system("sudo cp -r geo.txt /usr/bin");
    system("sudo cp -r points.txt /usr/bin");
    system("sudo chmod 755 /usr/bin/geo.txt");
    system("sudo chmod 755 /usr/bin/points.txt");
}

在运行应用程序之前,我必须粘贴: export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 在终端中。

它有效,但我认为我做错了。 将应用程序复制到/usr/bin 是好的解决方案吗?

【问题讨论】:

    标签: c linux centos


    【解决方案1】:

    /usr/lib等系统目录一般由系统包管理器管理,手动修改这些目录的内容可能会干扰系统包管理器的操作。这就是为什么这不是一个好的做法。人们通常将 3rd-party 软件安装到 /usr/local/opt,请参阅 Filesystem Hierarchy Standard 了解更多详情。

    要使应用程序“全局”,请将目录及其可执行文件的路径添加到PATH 环境变量中。您可以通过将以下行添加到用户的 ~/.bash_profile~/.bashrc(或您的 shell 使用的任何启动文件)中来做到这一点:

    export PATH="<dir>":"$PATH"
    

    ~/.bash_profile 在登录时评估,~/.bashrc 在打开新终端时评估(有关更多详细信息,请参阅The Bash Shell Startup Files)。或者,您可以手动执行 source ~/.bash_profilesource ~/.bashrc 以使该设置在您当前的 shell 中生效。

    为了避免必须设置LD_LIBRARY_PATH=&lt;dir&gt; 链接您的应用程序与-L&lt;dir&gt; -Wl,-rpath=&lt;dir&gt;。设置LD_LIBRARY_PATH 可能会破坏其他应用程序,请参阅LD_LIBRARY_PATH considered harmful

    【讨论】:

      猜你喜欢
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 2010-11-17
      • 1970-01-01
      • 2011-04-29
      • 2020-09-07
      相关资源
      最近更新 更多