【问题标题】:Where are system dependent symbols typically defined?系统相关符号通常在哪里定义?
【发布时间】:2011-06-15 12:37:59
【问题描述】:

作为 RA 项目的一部分,我正在查看 Tor 的源代码。我试图弄清楚为什么它被自动编译为在一个系统(SuSE)上使用线程并在另一个系统(Solaris)上分叉一个新进程。源代码中只有少数地方调用了fork(),它依赖于定义的各种符号(如 ENABLE_THREADING 或 USE_PTHREADS)。我搜索了这些文件,但无法找到大多数所需符号的定义。

我不是专门寻找解决此问题的方法,而是寻找一般指导方针。与系统相关的编译相关的符号是如何以及在哪里定义的?

【问题讨论】:

    标签: c symbols system-dependent


    【解决方案1】:

    我真的不知道,但这是我的猜测

    这些是在Makefile 中定义的。通常,Makefile 是由某种 ./configure 脚本动态生成的。

    请注意,在 C 和 C++ 中,将所有宏设为大写字符和下划线是常见的约定,以便更明显地表明它们是宏。这当然只是惯例,不是必需的。

    最后,grep 可以成为你的朋友。在源目录中尝试这样的操作:

    grep -R "ENABLE_THREADING" *
    

    这将找到所有使用或定义该宏的文件。

    【讨论】:

    • 当然,这个系统上的 grep 不允许您使用 -R 作为选项。不过,我确实在我之前忽略的目录中找到了正确的文件,谢谢,
    【解决方案2】:

    这些是在使用autotools 构建的configure 部分期间生成的。

    【讨论】:

      猜你喜欢
      • 2014-07-12
      • 2012-12-12
      • 2017-12-17
      • 2020-04-03
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      相关资源
      最近更新 更多