Building linuxbrew (homebrew) standalone version on Ubuntu 14.04
主要问题
我正在尝试在Ubuntu 14.04.3 LTS上构建linuxbrew独立安装,但是原始链接中的脚本当前已损坏。我的理想答案是一口气将脚本正确设置的脚本。我改进了脚本,以减少打h。
修复脚本的最新进展
通过linuxbrew构建gcc作为独立安装程序的一部分时,我无法克服
- 缺少stackoverflow crti.o文件
- stackoverflow找不到crti.o
- askubuntu crti.o
- 旧的启动板错误
我搜索了文件,它就在那里!
1 2 3 | find -name crti.o ./.linuxbrew/lib/crti.o ./.linuxbrew/Cellar/glibc/2.19/lib/crti.o |
我目前在
1 2 3 4 5 6 7 8 9 10 11 | /home/hbr/.linuxbrew/Cellar/binutils/2.25.1/x86_64-unknown-linux-gnu/bin/ld: cannot find crti.o: No such file or directory /home/hbr/.linuxbrew/Cellar/binutils/2.25.1/x86_64-unknown-linux-gnu/bin/ld: cannot find -lc /home/hbr/.linuxbrew/Cellar/binutils/2.25.1/x86_64-unknown-linux-gnu/bin/ld: cannot find crtn.o: No such file or directory collect2: error: ld returned 1 exit status make[3]: *** [libgcc_s.so] Error 1 make[3]: Leaving directory `/tmp/gcc20150929-3726-hif3of/gcc-5.2.0/build/x86_64-unknown-linux-gnu/libgcc' make[2]: *** [all-stage1-target-libgcc] Error 2 make[2]: Leaving directory `/tmp/gcc20150929-3726-hif3of/gcc-5.2.0/build' make[1]: *** [stage1-bubble] Error 2 make[1]: Leaving directory `/tmp/gcc20150929-3726-hif3of/gcc-5.2.0/build' make: *** [bootstrap] Error 2 |
本质上,在这一步中,我需要弄清楚如何确保brew / linuxbrew / gcc编译命令知道在哪里可以找到它。我尝试将其添加到脚本中的
注意:我最初是在这个github问题中寻求帮助的,但是他们目前无法解决此问题。
更新资料
我认为在此linuxbrew gcc公式中可能需要linuxbrew案例,该公式实现了stackoverflow crti.o文件丢失的解决方案之一。
这是原始的自制gcc公式供参考。
我已经使用该解决方案更新了linuxbrew独立安装说明。 我还创建了一个经过更新的linuxbrew-standalone.sh,该文件已在14.04中进行了测试,并且可以在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | # /bin/bash set -e set -u set -x cd $HOME # TODO: The next ln -s line breaks cross compiling with multiarch, need an alternative! # source: https://stackoverflow.com/a/9004026/99379 sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64 sudo apt-get update -y sudo apt-get update --fix-missing -y sudo apt-get install build-essential curl g++ git m4 ruby texinfo libbz2-dev libcurl4-openssl-dev libexpat-dev libncurses-dev zlib1g-dev gawk make patch tcl -y unset LD_LIBRARY_PATH PKG_CONFIG_PATH HOMEBREW_CC PATH=$HOME/.linuxbrew/bin:/usr/local/bin:/usr/bin:/bin yes | ruby -e"$(curl -fsSL https://raw.github.com/Homebrew/linuxbrew/go/install)" # hang on here. you will have to press return # note that even if brew doctor is a little unhappy we want to keep going brew doctor || true mkdir $HOME/.linuxbrew/lib ln -s lib $HOME/.linuxbrew/lib64 ln -s $HOME/.linuxbrew/lib $HOME/.linuxbrew/lib64 ln -s /usr/lib64/libstdc++.so.6 /lib64/libgcc_s.so.1 $HOME/.linuxbrew/lib/ PATH=$HOME/.linuxbrew/lib:$PATH export PATH LIBRARY_PATH=$HOME/.linuxbrew/lib export LIBRARY_PATH LD_LIBRARY_PATH=$HOME/.linuxbrew/lib export LD_LIBRARY_PATH # before this, you may want to `brew edit glibc` to produce compatibility for your particular kernel, for example: #"--enable-version=2.6.18" #brew unlink gawk brew install glibc brew unlink glibc brew install https://raw.githubusercontent.com/Homebrew/homebrew-dupes/master/zlib.rb brew reinstall binutils brew link glibc brew install patchelf brew install gcc --with-glibc --only-dependencies -v # When tested gcc was working except for the linking step, that's why it is force-accepted with ||true # TODO: make it so force accepting isn't necessary and errors are shown correctly brew install gcc --with-glibc -v || true rm -f $HOME/.linuxbrew/lib/{libstdc++.so.6,libgcc_s.so.1} brew link gcc --overwrite export HOMEBREW_CC=gcc brew install bzip2 curl expat brew install git --with-brewed-curl --with-brewed-openssl --without-tcl-tk brew tap homebrew/dupes brew install coreutils findutils gawk gnu-sed gnu-which grep libpng libxml2 libxslt make ncurses readline #ln -s ncursesw/curses.h ncursesw/form.h ncursesw/ncurses.h ncursesw/term.h ncursesw/termcap.h $HOME/.linuxbrew/include/ #ln -s libncurses.a $HOME/.linuxbrew/lib/libcurses.a #ln -s libncurses.so $HOME/.linuxbrew/lib/libcurses.so brew install ruby PATH=$HOME/.linuxbrew/bin:$HOME/.linuxbrew/sbin brew install hello && brew test hello; brew remove hello |
修复问题的主要内容是