AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 559575
Accepted
Minding
Minding
Asked: 2019-12-31 10:08:30 +0800 CST2019-12-31 10:08:30 +0800 CST 2019-12-31 10:08:30 +0800 CST

Ubuntu sys/byteorder.h & sys/endian.h 缺失,同时构建 MySQL 连接器/C++

  • 772

请记住,在从源代码构建方面我是初学者(尝试了几次,几乎总是失败)。

我正在尝试为运行 Ubuntu 19 的 Raspberry Pi 3b 构建 MySQL 连接器/C++ 8。我按照官方说明安装了所有先决条件(不是 100% 确定是否codecvt_utf8存在)。

我正在构建没有 JDBC 和 BOOST。我已经从源代码构建了 OpenSSL 1.1.1。

我正在运行的命令(我--target install直接添加了 - 不确定这是否是一个问题):

cmake .
cmake --build . --target install --config Release

由于以下原因,它失败了 AFAIK:

CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:10:致命错误:sys/endian.h:没有这样的文件或目录

CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:10:致命错误:sys/byteorder.h:没有这样的文件或目录

我查过了/usr/include,没有目录sys。endian.h直接在顶层,根本byteorder.h不存在。

为什么有些文件不见了?


如前所述,该sys目录位于 Ubuntu 上的不同位置。所以我运行了这个:

ln -s /usr/include/aarch64-linux-gnu/sys /usr/include/sys

但是丢失的文件实际上也不在该目录中。


跑步

find /usr/include -type f -name endian.h
find /usr/include -type f -name byteorder.h

显示,文件实际上在/usr/include/aarch64-linux-gnu/bits/endian.hand中/usr/include/aarch64-linux-gnu/asm/byteorder.h,我应该链接那些吗?似乎是个坏主意。


完整输出(使用缓存进度):

[  2%] Built target uuid_gen
[  4%] Building protobuf
[ 27%] Built target protobuf-lite
[ 28%] Building CXX object CMakeFiles/protobuf.dir/protobuf-3.6.1/src/google/protobuf/descriptor.cc.o
c++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
make[5]: *** [CMakeFiles/protobuf.dir/build.make:115: CMakeFiles/protobuf.dir/protobuf-3.6.1/src/google/protobuf/descriptor.cc.o] Error 1
make[4]: *** [CMakeFiles/Makefile2:73: CMakeFiles/protobuf.dir/all] Error 2
make[3]: *** [Makefile:84: all] Error 2
make[2]: *** [cdk/CMakeFiles/build_protobuf.dir/build.make:58: cdk/protobuf/build.stamp] Error 2
make[1]: *** [CMakeFiles/Makefile2:297: cdk/CMakeFiles/build_protobuf.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

完整的错误日志:

Performing C++ SOURCE FILE Test HAVE_IS_SAME failed with the following output:
Change Dir: /home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_dadf7/fast"
/usr/bin/make -f CMakeFiles/cmTC_dadf7.dir/build.make CMakeFiles/cmTC_dadf7.dir/build
make[1]: Entering directory '/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_dadf7.dir/src.cxx.o
/usr/bin/c++    -DHAVE_IS_SAME  -std=c++11   -o CMakeFiles/cmTC_dadf7.dir/src.cxx.o -c /home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp/src.cxx
/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp/src.cxx:1:1: error: ‘::main’ must return ‘int’
    1 | void main() { return is_same<bool,char>::value; }
      | ^~~~
/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp/src.cxx: In function ‘int main()’:
/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp/src.cxx:1:22: error: ‘is_same’ was not declared in this scope
    1 | void main() { return is_same<bool,char>::value; }
      |                      ^~~~~~~
/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp/src.cxx:1:30: error: expected primary-expression before ‘bool’
    1 | void main() { return is_same<bool,char>::value; }
      |                              ^~~~
/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp/src.cxx:1:30: error: expected ‘;’ before ‘bool’
    1 | void main() { return is_same<bool,char>::value; }
      |                              ^~~~
      |                              ;
/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp/src.cxx:1:34: error: expected unqualified-id before ‘,’ token
    1 | void main() { return is_same<bool,char>::value; }
      |                                  ^
/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp/src.cxx:1:35: error: expected unqualified-id before ‘char’
    1 | void main() { return is_same<bool,char>::value; }
      |                                   ^~~~
make[1]: *** [CMakeFiles/cmTC_dadf7.dir/build.make:66: CMakeFiles/cmTC_dadf7.dir/src.cxx.o] Error 1
make[1]: Leaving directory '/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp'
make: *** [Makefile:121: cmTC_dadf7/fast] Error 2

Source file was:
void main() { return is_same<bool,char>::value; }
Determining if the include file sys/endian.h exists failed with the following output:
Change Dir: /home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_a570b/fast"
/usr/bin/make -f CMakeFiles/cmTC_a570b.dir/build.make CMakeFiles/cmTC_a570b.dir/build
make[1]: Entering directory '/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_a570b.dir/CheckIncludeFile.c.o
/usr/bin/cc    -o CMakeFiles/cmTC_a570b.dir/CheckIncludeFile.c.o   -c /home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp/CheckIncludeFile.c
/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:10: fatal error: sys/endian.h: No such file or directory
    1 | #include <sys/endian.h>
      |          ^~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [CMakeFiles/cmTC_a570b.dir/build.make:66: CMakeFiles/cmTC_a570b.dir/CheckIncludeFile.c.o] Error 1
make[1]: Leaving directory '/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp'
make: *** [Makefile:121: cmTC_a570b/fast] Error 2


Determining if the include file sys/byteorder.h exists failed with the following output:
Change Dir: /home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_e560b/fast"
/usr/bin/make -f CMakeFiles/cmTC_e560b.dir/build.make CMakeFiles/cmTC_e560b.dir/build
make[1]: Entering directory '/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_e560b.dir/CheckIncludeFile.c.o
/usr/bin/cc    -o CMakeFiles/cmTC_e560b.dir/CheckIncludeFile.c.o   -c /home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp/CheckIncludeFile.c
/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:10: fatal error: sys/byteorder.h: No such file or directory
    1 | #include <sys/byteorder.h>
      |          ^~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [CMakeFiles/cmTC_e560b.dir/build.make:66: CMakeFiles/cmTC_e560b.dir/CheckIncludeFile.c.o] Error 1
make[1]: Leaving directory '/home/ubuntu/mysql-connector-c++-8.0.18-src/CMakeFiles/CMakeTmp'
make: *** [Makefile:121: cmTC_e560b/fast] Error 2

cmake 3.13.4
g++ 9.2.1
openssl 1.1.1d

ubuntu cmake
  • 1 1 个回答
  • 2464 Views

1 个回答

  • Voted
  1. Best Answer
    Joe
    2020-01-02T13:19:01+08:002020-01-02T13:19:01+08:00

    似乎 C++ 编译器内存不足。使用 make 构建时尝试指定 1 个线程,例如:

    $ cd path/to/connector/source
    $ mkdir build && cd build
    $ cmake .. -DCMAKE_BUILD_TYPE=Release
    $ make -j1
    

    (这被称为“源外”构建)

    如果失败,并且 Pi 仍然没有足够的内存,请使用该raspi-config工具(以 root 身份运行)调整 Pi 的内存分配,尽可能少地分配给 GPU,并禁用图形登录,以尝试增加用于编译的空闲内存。然后,重新启动以使更改生效,然后像从控制台一样构建。如果一切顺利,您可以再次使用raspi-config将之前修改的设置调整回其原始值。如果失败,那么您可能需要考虑在另一台具有更多内存的 Linux 机器上进行交叉编译。有关如何使用 为 Pi 构建交叉编译工具链crosstool-ng,然后使用它构建 CMake 项目的指南,可在此处找到:https ://blog.kitware.com/cross-compiling-for-raspberry-pi/ .

    • 1

相关问题

  • 使 Apple 键盘设置在 ../hid_apple/parameters/ 中持久化

  • 用文件中的点绘制二维图形

  • 如何验证我使用 9.9.9.9 作为 DNS?

  • 并行安装多个 linux 发行版

  • 自编译 OpenVPN 不会从 systemd 启动

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve