问题1:找不到 SCons 的 Python3 库
CentOS7 使用 pip3 安装 SCons,默认安装位置是 /usr/local/bin/scons, 库(engine)的默认安装位置是 /usr/local/lib/python3.6/site-packages/scons,但在运行时默认的搜索 engine 的路径不包含安装路径,导致错误。(显然 SCons 没有处理好 Python2 和 Python3,只搜索了 Python2)
$ scons SCons import failed. Unable to find engine files in: /usr/local/lib/scons-3.1.2 /usr/lib/scons-3.1.2 /usr/local/lib/scons-3.1.2 /usr/lib/python2.7/site-packages/scons-3.1.2 /usr/lib64/scons-3.1.2 /usr/local/lib/scons /usr/lib/scons /usr/local/lib/scons /usr/lib/python2.7/site-packages/scons /usr/lib64/scons Traceback (most recent call last): File "/usr/local/bin/scons", line 195, in <module> import SCons.Script ImportError: No module named SCons.Script
解决方法
如下建立软链接,
$ sudo ln -fs /usr/local/lib/python3.6/site-packages/scons /usr/local/lib/scons
即可正常使用,
$ scons scons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... gcc -o hello.o -c hello.c gcc -o hello hello.o scons: done building targets.
对于 Ubuntu18.04 ,也存在同样的问题,使用 pip3 将把 SCons 库安装到 /usr/local/lib/python3.6/dist-packages/scons/,同样需要建立软链接,
$ sudo ln -fs /usr/local/lib/python3.6/dist-packages/scons /usr/local/lib/scons
问题2:java 非标准安装情况下,找不到 javac
对于 java ,如果安装使用 OpenJDK,则 java, javac 会被安装到标准路径 /usr/bin/java,/usr/bin/javac。
但如果手动安装 Java,可能不是标准路径。例如,我如下安装 java,
$ cd /usr/share $ sudo tar --gzip -xvf jdk-8u91-linux-x64.tar.gz
然后再设置环境变量,打开 .bashrc 添加,
# for java export JAVA_HOME=/usr/share/jdk1.8.0_91 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
这样 java 和 javac 会在 /usr/share/jdk1.8.0_91/bin 下,但是 SCons 找不到……
解决方法
如下设置软链接,
$ sudo ln -s /usr/share/jdk1.8.0_91/bin/java /usr/local/bin/java $ sudo ln -s /usr/share/jdk1.8.0_91/bin/javac /usr/local/bin/javac
然后才能用 SCons 编译 java。
……