【问题标题】:How to run a self-compiled program in Unix/Linux?如何在 Unix/Linux 中运行自编译程序?
【发布时间】:2009-09-10 19:39:44
【问题描述】:

您好,我有以下程序。当我在终端 gcc main.c 上编译时,我确实得到了一个名为 a.out 的可执行文件。但是,如果我在终端中键入 a.out,我会收到以下消息:a.out: command not found

关于我可能做错了什么有什么想法吗?

#include <stdio.h>
#include <stdlib.h>

#define PROMPT "print something"
/*
 * 
 */
int main() {

    printf("CS-xxx Assignment x, xxxxx\n");

    printf(PROMPT);

    return (EXIT_SUCCESS);

}

【问题讨论】:

  • 这个问题可能对许多新开发人员有用,但它的标题需要更改,因为它不是真正的编译问题。也许是“编译后如何在 Unix/Linux 中运行程序?”

标签: c linux


【解决方案1】:

假设您使用基于 Unix 的系统,通常是“.”不在路径中: 所以,试试 ./a.out

【讨论】:

    【解决方案2】:

    尝试使用

    ./a.out
    

    大多数 Linux 系统不会在当前目录中查找可执行文件,因此您需要告诉它在当前目录中查找。

    【讨论】:

      【解决方案3】:

      您可能没有“。” (当前目录)在您的 PATH 环境变量中。

      尝试运行“./a.out”或添加“.”到你的路径。

      【讨论】:

      • 但请记住“。”出于安全原因,它不在 $PATH 中,所以除非你真的需要 - 避免将它添加到你的 $PATH 中。
      • 我支持 Eominique:不要这样做。但如果您必须,请始终输入“.”。它位于搜索路径的end
      【解决方案4】:

      使用

      ./a.out

      您必须运行指定当前目录的程序。

      【讨论】:

        【解决方案5】:

        只需键入 ./a.out 即可。问题在于没有 ./ shell 认为您正在输入命令。

        【讨论】:

        • 正在输入命令。 shell 只是在$PATH 上找不到该名称之一。
        【解决方案6】:

        必须通过指定unix家族下的目录路径来运行所有的c、c++、shell程序。符号 ./ 应该指定当前目录。

        示例: ./kernel(内核精灵在当前目录中) ../kernel(内核精灵在当前目录的父目录中) childdir/kernel(内核elf在当前目录的子目录中)

        【讨论】:

          【解决方案7】:

          使用 ./a.out 现在你可以执行你的可执行文件了。 这个 ./ 基本上表示在当前目录中查找。

          我想现在你得到了你必须做的事情。

          【讨论】:

            猜你喜欢
            • 2011-03-19
            • 2013-05-21
            • 1970-01-01
            • 2012-01-23
            • 2010-09-24
            • 2017-01-12
            • 1970-01-01
            • 2011-12-12
            • 2022-10-14
            相关资源
            最近更新 更多