Mac M1环境下C++ Autotools项目无法找到Re-flex库的解决方法
解决Re-flex头文件找不到的问题
针对Mac M1+Homebrew+Autotools的场景,试试以下几种方案:
1. 直接给configure传递路径参数(最可靠)
首先清理之前的构建缓存:
make distclean
然后运行configure时明确指定Re-flex的头文件和库路径:
./configure CPPFLAGS="-I/opt/homebrew/opt/re-flex/include" LDFLAGS="-L/opt/homebrew/opt/re-flex/lib"
之后再执行make编译。
2. 检查路径有效性
先确认Re-flex的头文件确实存在于指定路径:
ls /opt/homebrew/opt/re-flex/include/reflex/matcher.h
如果输出文件路径,说明路径没问题;如果提示不存在,重新安装Re-flex:
brew reinstall re-flex
3. 修改项目的Makefile.am配置
如果项目的Autotools配置没默认包含Re-flex路径,直接修改Makefile.am:
- 在
AM_CPPFLAGS中添加头文件路径:AM_CPPFLAGS = -I/opt/homebrew/opt/re-flex/include - 在
AM_LDFLAGS中添加库路径:AM_LDFLAGS = -L/opt/homebrew/opt/re-flex/lib
修改后重新生成配置文件:
autoreconf -i
再重新运行./configure和make。
4. 强制使用arm64架构编译
Mac M1的Homebrew默认安装在/opt/homebrew(arm64架构),如果项目默认用x86_64编译会找不到库,试试强制arm64:
arch -arm64 ./configure CPPFLAGS="-I/opt/homebrew/opt/re-flex/include" LDFLAGS="-L/opt/homebrew/opt/re-flex/lib"
内容的提问来源于stack exchange,提问作者Lazyx
相关产品推荐
相关产品推荐

