加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

无法在Linux上编译C代码,但可以在Mac OS上编译

发布时间:2020-12-14 01:12:14 所属栏目:Linux 来源:网络整理
导读:对于我正在研究的项目,我想尝试以下程序: http://sourceforge.net/projects/tirg/ 它由两个C文件组成,但是我无法在运行Linux的笔记本电脑上进行编译,而在我的朋友运行Mac OS的笔记本电脑上编译没有任何问题.我没有任何编译C代码的经验,所以它可能是初学者的
对于我正在研究的项目,我想尝试以下程序:
http://sourceforge.net/projects/tirg/

它由两个C文件组成,但是我无法在运行Linux的笔记本电脑上进行编译,而在我的朋友运行Mac OS的笔记本电脑上编译没有任何问题.我没有任何编译C代码的经验,所以它可能是初学者的错误.

运行Mac OS的笔记本电脑设法编译代码没有问题使用以下g版本:

i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

我尝试使用gcc,g,clang和clang在运行Arch LInux(64位)的笔记本电脑上使用以下版本编译C文件:

gcc and g++ (GCC) 4.8.1 20130725 (prerelease)
clang version 3.3 (tags/RELEASE_33/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix

编译时得到的错误是:

/usr/include/c++/4.8.1/bits/stl_vector.h:1240:36: error: no matching function for call to ‘std::vector<std::vector<unsigned char> >::_M_fill_assign(int&,int&)’
         { _M_fill_assign(__n,__val); }
                                    ^

这是由这行代码引起的:

std::vector<std::vector<trg::Rgb> > a(300,255);

我已将编译的完整输出放在pastebin上:
http://pastebin.com/m285PSrH

我在编译OpenCV时也遇到了问题,因此我的配置可能有问题.我认为这是版本问题,例如标准库的错误版本.

希望有更多C经验的人可以指出可能出错的地方.谢谢!

解决方法

i686-apple-darwin11-llvm-g -4.2做错了.
如果可以进行隐式转换,您将获得向量的2D向量.
但[23.3.6.2]:

explicit vector(size_type n);

你可能会这样做:

struct Rgb {};
int main() {
    std::vector<Rgb> rgb_vector(255);
    std::vector<std::vector<Rgb> > a(300,rgb_vector);
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读