在亚马逊Linux上运行CMake

5

我正在尝试在AWS Amazon Linux EC2实例上构建OpenJpeg。我已经安装了cmake和gcc,并且在安装过程中没有遇到任何问题。但是当我尝试使用cmake编译openjpeg时,出现以下错误:

-- Check if the system is big endian
-- Searching 16 bit integer
CMake Error at /usr/share/cmake/Modules/TestBigEndian.cmake:44 (message):
  no suitable type found
Call Stack (most recent call first):
  CMakeLists.txt:164 (TEST_BIG_ENDIAN)


-- Configuring incomplete, errors occurred!

检查错误日志后,似乎CMake无法确定整数、短整型和长整型的大小。完整的错误日志可以在此处找到。

我该如何解决这个问题并让CMake正常工作呢?

4个回答

23

亚马逊有一份指南:编译软件的准备工作,其中提出以下命令来安装C编译器。

sudo yum groupinstall "Development Tools"

接下来,您可以自行下载并构建Cmake:安装 Cmake 3

wget https://cmake.org/files/v3.18/cmake-3.18.0.tar.gz
tar -xvzf cmake-3.18.0.tar.gz
cd cmake-3.18.0
./bootstrap
make
sudo make install

注意:最后一步需要使用sudo。


1
./bootstrap 在几分钟后失败了。 无法找到 OpenSSL。请安装 OpenSSL 开发包或使用 -DCMAKE_USE_OPENSSL=OFF 配置 CMake 以在没有 OpenSSL 的情况下构建。这个链接帮助了我解决问题:https://discourse.cmake.org/t/how-to-compile-dcmake-use-openssl-off/1271 - Jordan Kohn
1
@JordanKohn 我已经通过第二个答案解决了问题,首先使用了yum install sudo wget openssl-devel -y命令,尽管我需要使用sudo来执行它。 - undefined

14

这适用于最新的亚马逊Linux镜像(2021年11月):

# Install sudo, wget and openssl, which is required for building CMake
yum install sudo wget openssl-devel -y

# Install development tools
sudo yum groupinstall "Development Tools" -y

# Download, build and install cmake
wget https://cmake.org/files/v3.18/cmake-3.18.0.tar.gz
tar -xvzf cmake-3.18.0.tar.gz
cd cmake-3.18.0
./bootstrap
make
sudo make install

1
虽然这并没有真正回答为什么出现错误,但我能够通过从源代码构建CMake来构建OpenJpeg。因此,我只是删除了通过yum安装的Cmake,我相信它是2.8.12版本。下载了最新的CMake3源代码(v 3.10),构建了Cmake、openjpeg和所有其他软件包,没有任何问题。

0
你可以尝试设置Docker容器来复制正确的环境。这样,你可以在本地机器上创建一个容器,在容器环境中确保所有内容都能构建,并在EC2上使用此环境。
Github上有一个项目提供了一个Docker镜像,可用于编译Lambda和本地测试。请查看:https://github.com/lambci/docker-lambda

谢谢,但我需要直接在实例上构建,因为我将把软件包二进制文件移动到AWS Lambda。 - Zaid Amir
@ZaidAmir 这不是问题 - 看看这个:https://github.com/lambci/docker-lambda - ivanmoskalev
1
我真的不认为容器可以解决这个特定的问题。EC2实例应该自己复制Lambda环境。没有必要增加这个复杂度的另一层。 - Zaid Amir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接