2016-08-11 3 views
2

WindowsのBash(WinBash?Win-Bash?)でemacs-24.4をコンパイルしようとしていますが、 。 (./configureをが正常に動作します)WindowsのBash - Emacsのビルドに失敗しました:メモリ保護が有効になっています

私は '作る' の後を得るエラーは次のとおりです。などで

Dumping under the name emacs 
************************************************** 
Warning: Your system has a gap between BSS and the 
heap (25164600 bytes). This usually means that exec-shield 
or something similar is in effect. The dump may 
fail because of this. See the section about 
exec-shield in etc/PROBLEMS for more information. 
************************************************** 
/bin/bash: line 7: 6853 Segmentation fault  (core dumped) ./temacs --batch --load loadup bootstrap 
make[1]: *** [bootstrap-emacs] Error 1 
make[1]: Leaving directory `/home/tdwyer/bin/emacs-24.5_linux_build/src' 
make: *** [src] Error 2 

/課題提出、関連セクションが得られます。当然

*** Segfault during `make bootstrap' under the Linux kernel. 

In Red Hat Linux kernels, "Exec-shield" functionality is enabled by 
default, which creates a different memory layout that can break the 
emacs dumper. Emacs tries to handle this at build time, but if this 
fails, the following instructions may be useful. 

Exec-shield is enabled on your system if 

    cat /proc/sys/kernel/exec-shield 

prints a value other than 0. (Please read your system documentation 
for more details on Exec-shield and associated commands.) 

Additionally, Linux kernel versions since 2.6.12 randomize the virtual 
address space of a process by default. If this feature is enabled on 
your system, then 

    cat /proc/sys/kernel/randomize_va_space 

prints a value other than 0. 

When these features are enabled, building Emacs may segfault during 
the execution of this command: 

    ./temacs --batch --load loadup [dump|bootstrap] 

To work around this problem, you can temporarily disable these 
features while building Emacs. You can do so using the following 
commands (as root). Remember to re-enable them when you are done, 
by echoing the original values back to the files. 

    echo 0 > /proc/sys/kernel/exec-shield 
    echo 0 > /proc/sys/kernel/randomize_va_space 

Or, on x86, you can try using the `setarch' command when running 
temacs, like this: 

    setarch i386 -R ./temacs --batch --load loadup [dump|bootstrap] 

or 

    setarch i386 -R make 

(The -R option disables address space randomization.) 

そして、 、私はそれが有効になっているかどうかを確認します。..それがある場合:

$ cat /proc/sys/kernel/randomize_va_space 
2 

しかし残念ながら、私は(たとえ実行中のbashそれを無効にしよう)管理者として、それは失敗します。さらに

$ sudo echo 0 > /proc/sys/kernel/randomize_va_space 
bash: /proc/sys/kernel/randomize_va_space: Permission denied 

を、Setarchでは使用して動作しません:

setarch x86_84 -R make 

提案?

答えて

3

の指示に従ってください: https://askubuntu.com/questions/318315/how-can-i-temporarily-disable-aslr-address-space-layout-randomization

重要な部分:

「それを無効にするには、

を実行するには、0をエコー| sudoのティーは、/ proc/sys/kernel/randomize_va_space

と再度有効にするには

echo 2 | sudo tee/proc/sys/kernel/randomize_va_space "

+0

それがうまくいった!私は以前に「ティー」コマンドを使用していませんでした。ありがとう! – tdwyer

関連する問題