我想使用AWS Lambda功能生成视频.
我现在有以下过程来构建我的Lambda函数:
触发一个Amazon Linux EC2实例并以root身份运行它:
#! /usr/bin/env bash
# Install the SciPy stack on Amazon Linux and prepare it for AWS Lambda
yum -y update
yum -y groupinstall "Development Tools"
yum -y install blas --enablerepo=epel
yum -y install lapack --enablerepo=epel
yum -y install atlas-sse3-devel --enablerepo=epel
yum -y install Cython --enablerepo=epel
yum -y install python27
yum -y install python27-numpy.x86_64
yum -y install python27-numpy-f2py.x86_64
yum -y install python27-scipy.x86_64
/usr/local/bin/pip …Run Code Online (Sandbox Code Playgroud) ldd是一种检查给定可执行文件正在或将要使用的共享库的简单方法.但是它并不总是按预期工作.例如,请参阅以下shell片段,演示如何"失败"将libreadline"依赖"发现到python二进制文件中
我尝试了很多其他发行版,但我是从Tikanga复制的
$ lsb_release -a
LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 5.6 (Tikanga)
Release: 5.6
Codename: Tikanga
Run Code Online (Sandbox Code Playgroud)
查看ldd默认安装的内容python(来自官方存储库).
$ which python
/usr/bin/python
$ ldd `which python`
libpython2.4.so.1.0 => /usr/lib64/libpython2.4.so.1.0 (0x00000030e6200000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000030e0e00000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000030e0a00000)
libutil.so.1 => /lib64/libutil.so.1 (0x00000030ee800000)
libm.so.6 => /lib64/libm.so.6 (0x00000030e0600000)
libc.so.6 => /lib64/libc.so.6 (0x00000030e0200000)
/lib64/ld-linux-x86-64.so.2 (0x00000030dfe00000)
$ ldd `which python` | grep readline
$
Run Code Online (Sandbox Code Playgroud)
没有找到关于readline的内容.现在我从交互式使用中知道这个二进制文件确实具有实际功能,所以不要试图看看它来自何处.
$ python &
[1] 21003
$ Python …Run Code Online (Sandbox Code Playgroud) 我要求我静态链接所有库,包括libstdc ++,libc,pthread等.有一个我想要动态链接的omniorb库.
目前我已动态链接所有库.ldd显示以下内容
linux-vdso.so.1 => (0x00007fff251ff000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f291cc47000)
libomniDynamic4.so.1 (0x00007f291c842000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f291c536000)
libm.so.6 => /lib64/libm.so.6 (0x00007f291c2e0000)
libgomp.so.1 => /usr/lib64/libgomp.so.1 (0x00007f291c0d7000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f291bebf000)
libc.so.6 => /lib64/libc.so.6 (0x00007f291bb66000)
/lib64/ld-linux-x86-64.so.2 (0x00007f291ce63000)
librt.so.1 => /lib64/librt.so.1 (0x00007f291b95d000)
libomniORB4.so.1 (0x00007f291b6aa000)
libomnithread.so.3 (0x00007f291cf35000
Run Code Online (Sandbox Code Playgroud)
我需要ldd将libomniDynamic4.so.1显示为唯一的动态链接库.
我该如何实现这一目标?
我有一个C/C++应用程序,我需要确定它所依赖的所有(共享)库,所以我可以与其他人共享它和库,这样他们就不必在Linux上安装任何软件包了.
那么可以确定C++应用程序所依赖的所有库吗?
一点点澄清,我暂时没有应用程序makefile,这就是为什么我必须找到另一种方式.
如何使用C++获取linux中elf二进制文件所需的所有动态库列表?
一旦我设法从二进制文件中提取信息(文件名?),我可以通过搜索找到实际文件PATH,但我无法找到有关从ELF二进制文件中提取未编码信息的任何信息.
思考?
是否有任何工具可以读取头文件来打印 Linux 可执行文件运行所需的动态库的名称?
我需要它知道我刚刚从源代码(它是 GDB 的 Python 分支)构建的二进制文件中是否有一些奇怪的依赖项(即不是很标准),或者它主要是静态链接的。我认为这比阅读 makefile 更容易......