单个主机上有多个glibc库
我的linux(SLES-8)服务器目前有glibc-2.2.5-235,但我有一个程序无法在这个版本上运行,需要glibc-2.3.3.
是否可以在同一主机上安装多个glibc?
这是我在旧glibc上运行程序时遇到的错误:
./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./myapp)
./myapp: /lib/i686/libpthread.so.0: version `GLIBC_2.3.2' not found (required by ./myapp)
./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./libxerces-c.so.27)
./myapp: /lib/ld-linux.so.2: version `GLIBC_2.3' not found (required by ./libstdc++.so.6)
./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./libstdc++.so.6)
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个名为newglibc的新目录,并将以下文件复制到:
libpthread.so.0
libm.so.6
libc.so.6
ld-2.3.3.so
ld-linux.so.2 -> ld-2.3.3.so
Run Code Online (Sandbox Code Playgroud)
和
export LD_LIBRARY_PATH=newglibc:$LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
./myapp: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ./newglibc/libpthread.so.0)
./myapp: /lib/ld-linux.so.2: version `GLIBC_2.3' not found (required by libstdc++.so.6)
./myapp: …
Run Code Online (Sandbox Code Playgroud) 我内置了最新的glibc,现在我遇到像一些麻烦功能的coreutils ls
或cat
或其他任何东西一样vim
.
我的错误是
-bash-4.0$ cat
cat: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
Run Code Online (Sandbox Code Playgroud)
我用以下配置构建了glibc而没有错误
../glibc/configure --prefix=/home/ex/uid377/glibbuilt
Run Code Online (Sandbox Code Playgroud)
在旧版本(如2.14)上运行实用程序会导致分段错误.
-bash-4.0$ ./pwd
./pwd: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./pwd)
-bash-4.0$ LD_LIBRARY_PATH=/home/ex/uid377/glibc/lib/:${LD_LIBRARY_PATH}
-bash-4.0$ ./pwd
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)
编辑 内核版本
-bash-4.0$ uname -r
2.6.32.26-175.fc12.x86_64
Run Code Online (Sandbox Code Playgroud) 我在Windows XP上安装了Anaconda 3 2.3.0.它应该是支持windows xp的anaconda的最后一个版本,因为它包含python 3.4.3,而python 3.4.x是支持windows xp的python的最后一个版本.
安装包时
conda安装
,其中一个依赖项是将conda更新为conda 4.x. 运行conda install时,conda 4.x在命令行中崩溃了.这使得anaconda无法使用,我卸载了anaconda.
我的问题是,是否可以锁定软件包的版本?对于这两个用例:
如果2个用例中只有一个是可能的或已知或更容易,请将其写为答案.
这基本上是这里提出的问题的重复.但是,我使用的是Red Hat版本6.6,它有glibc 2.12(glibc 2.17,我认为是RHEL ver 7引入的).是否可以在本地安装tensorflow,而无需升级操作系统.(我没有管理员权限).这是我得到的错误
ImportError: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /data02/storage/kgupt33/.local/anaconda/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so)
Run Code Online (Sandbox Code Playgroud) 我有一个使用Tensorflow进行图像分类的Java演示工作.它在Windows上运行正常,但现在我想从Java Tomcat Web服务器将其作为Web服务运行.
我已将所有Tensorflow jar添加到Tomcat的lib中,但Tensorflow具有jni依赖性.我不知道如何安装和链接这个,所以Tensorflow可以在CentOS Linux服务器上运行.
我已经读过这个,但我不需要在服务器上运行python,只需从Java访问Tensorflow.
更新:**好的,要在Windows上运行Tomcat,我会执行以下操作,
从https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-1.6.0.jar下载libtensorflow.jar
然后是来自https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow_jni-cpu-windows-x86_64-1.6.0.zip的dll (解压zip以获取dll)
请参阅https://www.tensorflow.org/install/install_java
把jar放在我的tomcat lib中,然后创建一个tomcat dll dir并将dll放入其中
编辑我的setenv.bat并添加该行,
SET CATALINA_OPTS=-Xmx4g -XX:PermSize=128m -XX:MaxPermSize=512m -Djava.library.path=D:\Engineering\apache-tomcat-7.0.50\dll
Run Code Online (Sandbox Code Playgroud)
这适用于Windows.
对于Linux,CentOS 6,我也这样做,但不是从dll下载这些文件, https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow_jni-cpu-linux-x86_64-1.6.0.tar. GZ
并编辑我的setenv.sh并添加行,
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/tomcat8/so"
export JAVA_OPTS="-server -Xmx38g -Djava.library.path=/usr/local/tomcat8/so"
export CATALINA_OPTS="-Djava.library.path=/usr/local/tomcat8/so"
Run Code Online (Sandbox Code Playgroud)
但这些似乎都不起作用,我总是得到错误,
找不到适用于OS的TensorFlow本机库:linux,architecture:x86_64.有关 可能的解决方案(例如从源代码构建库),请参阅 https://github.com/tensorflow/tensorflow/tree/master/tensorflow/java/README.md.可以通过将org.tensorflow.NativeLibrary.DEBUG = 1添加到JVM的系统属性来获取有关尝试查找本机库的其他信息.
我发现还有另一个部署选项,只需添加jar,
到lib,它会神奇地找到正确的so文件.
https://mvnrepository.com/artifact/org.tensorflow/libtensorflow_jni
当我尝试这个选项时,似乎找到了这样的文件,但是我收到了这个错误,
/usr/local/tomcat8/temp/tensorflow_native_libraries-1522357321965-0/libtensorflow_jni.so:/lib64/libc.so.6:找不到版本`GLIBC_2.16'(/ usr/local/tomcat8/temp/tensorflow_native_libraries-需要) 1522357321965-0/libtensorflow_jni.so)
好像Tensorflow只支持非常特定的操作系统和版本?
我发现这个, 在Ubuntu 12.04中导入python2.7中的Tensorflow时出错.'找不到GLIBC_2.17'
但尚未尝试任何选项.生产系统看起来并不乐观.
看看GLIBC是什么,它适用于GPU,但我没有或者不需要使用GPU,只想使用CPU,为什么需要这个库?
**更新所以...我试图在Centos6上构建glibc 1.6.0,以便我可以通过以下方式使用它,
https://unix.stackexchange.com/questions/176489/how-to-update-glibc-to-2-14-in-centos-6-5
这些步骤有效,但是导致尝试运行Tensorflow时出现此错误,似乎它依赖于另一个lib ...
加载共享库时出错:__ docso_time:dlopen()的无效模式
此时我已经准备放弃了,并尝试安装Centos7,但这条路线需要我们升级12台生产服务器......
我正在尝试在Centos 5上安装Tensorflow.不幸的是,在使用pip安装它之后,正如官方文档中所解释的那样
sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
当我尝试在python shell上导入tensorflow时出现以下错误
ImportError:/home/users/caohao/.jumbo/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so:ELF文件操作系统ABI无效
github上的以下问题给了我一个主角:https: //github.com/tensorflow/tensorflow/issues/350
实际上,tensorflow要求glibc版本至少为2.17
当我输入
ldd --version
我有以下输出:
ldd (GNU libc) 2.5
Run Code Online (Sandbox Code Playgroud)
所以我需要升级glibc.我想执行"并行"安装,因为升级glibc对我的机器来说可能是危险因此我下载了源代码,并且我使用了命令
../glibc-2.18/configure --prefix =/opt/glibc-2.18
将其安装在其他目录中
问题是我启动configure时出现以下错误
configure:错误:汇编程序太旧,.cfi_personality支持缺失
我想我也必须更新binutils,所以我下载了源代码并将其安装在/opt/binutils-2.26/中以免损坏系统.
但是当我尝试配置glibc时,我仍然遇到同样的错误.
这是我的问题:
如何指定我想用哪个版本的binutil来构建glibc?
编辑:我应该有RTFM,答案是使用'--with-binutils = directory'选项
如果将glopc安装在/opt/glibc-2.18中,怎么能让它成为一个好的glibc版本呢?
仅供我使用python 2.7.11
非常感谢和最诚挚的问候
我创建了一个新的conda环境
user@machine:~/project$ conda create -n test-env -c numba python=3.5.2 llvmdev=3.8
Fetching package metadata ...........
Solving package specifications: .
Package plan for installation in environment /home/user/anaconda2/envs/test-env:
The following NEW packages will be INSTALLED:
llvmdev: 3.8.1-7 numba
openssl: 1.0.2k-0
pip: 9.0.1-py35_1
python: 3.5.2-0
readline: 6.2-2
setuptools: 27.2.0-py35_0
sqlite: 3.13.0-0
system: 5.8-2 numba
tk: 8.5.18-0
wheel: 0.29.0-py35_0
xz: 5.2.2-1
zlib: 1.2.8-3
Proceed ([y]/n)? y
#
# To activate this environment, use:
# > source activate test-env
#
# To deactivate this environment, use: …
Run Code Online (Sandbox Code Playgroud) 目前,我在一个具有文件的目录中libshared-object.so
(名称出于一般性而更改)。
当我跑步
$ objdump -p libshared-object.so
Run Code Online (Sandbox Code Playgroud)
我收到以下输出:
libshared-object.so: file format elf64-x86-64
Program Header:
LOAD off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**21
filesz 0x00000000000828ee memsz 0x00000000000828ee flags r-x
LOAD off 0x0000000000083768 vaddr 0x0000000000283768 paddr 0x0000000000283768 align 2**21
filesz 0x00000000000048e0 memsz 0x0000000000004af0 flags rw-
DYNAMIC off 0x0000000000084af0 vaddr 0x0000000000284af0 paddr 0x0000000000284af0 align 2**3
filesz 0x00000000000002a0 memsz 0x00000000000002a0 flags rw-
NOTE off 0x00000000000001c8 vaddr 0x00000000000001c8 paddr 0x00000000000001c8 align 2**2
filesz 0x0000000000000024 memsz 0x0000000000000024 flags r--
EH_FRAME off 0x0000000000072c6c vaddr 0x0000000000072c6c …
Run Code Online (Sandbox Code Playgroud)