【问题标题】:g++: link to non-standard /usr/localg++:链接到非标准的 /usr/local
【发布时间】:2015-04-19 05:04:20
【问题描述】:

我有一台 OSX 10.7 计算机,但没有管理员帐户,并试图安装在 here 找到的 gcc 和 g++ 的预编译版本。我试图使用inthesequestions(三个不同的链接)提供的答案来用 g++ 编译一些代码,以取得令人困惑的效果。我有一个这样的文件夹结构:

~/code/:
    usr/:
        local/:
            bin/ (3.6MB)
            include/ (8.6MB)
            lib/ (51MB)
            libexec/ (49MB)
            share/ (16MB)
    c++/:
        source/ (contains .cpp files)

g++ -v 返回:

code USER$ usr/local/bin/g++ -v
Using built-in specs.
COLLECT_GCC=usr/local/bin/g++
COLLECT_LTO_WRAPPER=/Users/USERNAME/code/usr/local/bin/../libexec/gcc/    x86_64-apple-darwin11.4.0/4.7.1/lto-wrapper
Target: x86_64-apple-darwin11.4.0
Configured with: ../gcc-4.7.1/configure --enable-languages=fortran
Thread model: posix
gcc version 4.7.1 (GCC)

尝试编译“#include”只有 iostream 的文件:

$ usr/local/bin/g++ c++/source/test.cpp -o ex6
In file included from     /Users/USERNAME/code/usr/local/bin/../lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/bits/postypes.h:42:0,
             from /Users/USERNAME/code/usr/local/bin/../lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/iosfwd:42,
             from /Users/USERNAME/code/usr/local/bin/../lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/ios:39,
             from /Users/USERNAME/code/usr/local/bin/../lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/ostream:40,
             from /Users/USERNAME/code/usr/local/bin/../lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/iostream:40,
             from c++/source/ex6.cpp:1:
/Users/USERNAME/code/usr/local/bin/../lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/cwchar:46:19: fatal error: wchar.h: No such file or directory
compilation terminated.

我尝试使用提到的链接之一中推荐的一些标志进行编译,如下所示:(使用“usr/”到“usr/local/include/”和“usr/”到“/usr/local/”的所有组合lib" 给出相同的结果(这也与不使用标志相同)。

$ /Users/USERNAME/code/usr/local/bin/g++ source/ex6.cpp -I/Users/USERNAME/code/usr/local/include/ -L/Users/USERNAME/code/usr/local/lib/In file included from /Users/USERNAME/code/usr/local/bin/../lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/bits/postypes.h:42:0,
             from /Users/USERNAME/code/usr/local/bin/../lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/iosfwd:42,
             from /Users/USERNAME/code/usr/local/bin/../lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/ios:39,
             from /Users/USERNAME/code/usr/local/bin/../lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/ostream:40,
             from /Users/USERNAME/code/usr/local/bin/../lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/iostream:40,
             from source/ex6.cpp:1:
/Users/USERNAME/code/usr/local/bin/../lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/cwchar:46:19: fatal error: wchar.h: No such file or directory
compilation terminated.

简而言之,我无法理解所提供链接中的答案是什么意思。我看到了对规范文件的引用,我找不到它的具体信息,以及“-Wl,-rpath,$(DEFAULT_LIB_INSTALL_PATH)”,我不知道应该用什么代替“DEFAULT_LIB_INSTALL_PATH”。

我应该怎么做才能将下载的 g++ 编译器指向它自己的文件而不将它们放在默认位置,因为我没有此帐户的管理功能?

我会根据需要提供任何信息。

【问题讨论】:

    标签: macos unix gcc installation g++


    【解决方案1】:

    您似乎没有所需的头文件。您需要从Apple Developers 站点安装Command Line Tools(需要免费注册)。问题是您没有管理员帐户。建议您请管理员为您安装工具。如果不可能,您可以尝试将下载的包 (DevSDK.pkg) 的内容提取到您的本地目录(Pacifist 可以这样做)并将缺少标头的路径传递给您的编译器。不过我没试过。

    【讨论】:

    • 我实际上已经尝试过(甚至使用 Pacifist)。我不记得为什么,但它没有工作。我尝试使用使用 tar 解压缩 pkg 文件的指南,但我认为文件结构存在一些我不知道如何处理的问题。我会检查的。
    • 我找不到我尝试使用的教程。不过,我相当肯定它在 stackoverflow 上。
    • 这很容易。只需使用 Pacifist 将带有 libc 标头的 usr/include 文件夹提取到本地文件夹即可。然后在编译器中添加-I/path/to/extracted/include
    • 我刚试过,它给出了同样的信息。我使用的确切命令是$ ../usr/local/bin/g++ -I../include source/ex6.cpp。然后,我尝试将 include 中的文件复制到下载的 g++ 目录(我之前备份了它),而不替换唯一的冲突文件夹:“c++”。相同的消息。我尝试替换“c++”。相同的消息。我不完全明白我在这里做错了什么。
    • 如果您的错误信息与以前完全相同,抱怨缺少wchar.h 文件,请确保该文件位于您从下载的包中复制的文件夹中。还要确保将文件路径传递给编译器
    猜你喜欢
    • 2013-04-18
    • 1970-01-01
    • 2017-04-10
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 2014-07-17
    • 1970-01-01
    相关资源
    最近更新 更多