使用jemalloc的ruby无法配置- homebrew/OSX/montery/m1/arm(?)

xghobddn  于 2023-02-15  发布在  Ruby
关注(0)|答案(2)|浏览(123)

OSX/ Monterey /M1/ARM/自制软件:我这辈子都不能让它工作:

./configure --with-jemalloc

它会随着

checking jemalloc/jemalloc.h presence... no
configure: error: jemalloc requested but not found

尽管它就在那里/opt/homebrew/Cellar/jemalloc/5.2.1_1/include/jemalloc/jemalloc.js.
brew --prefix jemallocjemalloc-config --includedir看起来都正确。
我试过各种版本的:

export RUBY_CONFIGURE_OPTS="--with-jemalloc-include=$(brew --prefix jemalloc)/include

和/或

./configure --with-jemalloc-include=$(brew --prefix jemalloc)/include

但是没有用,甚至不确定ruby是否考虑了这些env变量/标志,或者它们是rvm/rbenv/ruby构建的东西。
我开始直接用ruby的configure而不是rvm/build工具来做我所有的测试。

nkhmeac6

nkhmeac61#

请尝试以下操作:

❯ export HOMEBREW_PREFIX=$(brew --prefix)
❯ export CPPFLAGS="$CPPFLAGS -I $HOMEBREW_PREFIX/include"
❯ export LDFLAGS="$LDFLAGS -L $HOMEBREW_PREFIX/lib"
❯ cd ruby-2.7.6 && ./configure --with-jemalloc
❯ make && make install
yi0zb3m4

yi0zb3m42#

这在使用RVM时有效:

# Install jemalloc first
brew install jemalloc

# Install using RVM:
rvm install 3.2.1 --with-jemalloc --with-cppflags="-I$(brew --prefix)/include" -E "LDFLAGS=-L$(brew --prefix)/lib"

看起来--with-cppflags像预期的那样工作,但是它被传入的内部RVM标志覆盖了,所以--with-ldflags什么也不做,这就是为什么我们传入-E标志(作为环境变量)。

相关问题