如何获取XML::Parser依赖并配置包使用Alien::Expat构建的Expat库?
解决AIX 7上XML::Parser使用Alien::Expat构建的Expat库的配置问题
1. 确认Alien::Expat的安装路径参数
先获取Alien::Expat提供的编译和链接参数,执行命令:
perl -MAlien::Expat -e 'print Alien::Expat->cflags . "\n" . Alien::Expat->libs . "\n"'
会输出类似AIX环境下的路径信息:
-I/opt/alien-expat/include
-L/opt/alien-expat/lib -lexpat
这些参数用于指定编译器找头文件、链接器找库的位置。
2. 构建XML::Parser时指定依赖路径
在XML::Parser的源码目录下,将Alien::Expat的参数传入Makefile.PL,强制XML::Parser使用该库:
perl Makefile.PL \ EXPATINCPATH=$(perl -MAlien::Expat -e 'print Alien::Expat->incdir') \ EXPATLIBPATH=$(perl -MAlien::Expat -e 'print Alien::Expat->libdir')
或者直接传入完整的编译/链接参数:
perl Makefile.PL \ "CCFLAGS=$(perl -MAlien::Expat -e 'print Alien::Expat->cflags')" \ "LIBS=$(perl -MAlien::Expat -e 'print Alien::Expat->libs')"
3. 适配AIX链接器特殊要求
AIX的ld链接器需要-brtl参数启用运行时链接,避免库路径加载失败,可追加到LIBS参数中:
perl Makefile.PL \ "CCFLAGS=$(perl -MAlien::Expat -e 'print Alien::Expat->cflags')" \ "LIBS=$(perl -MAlien::Expat -e 'print Alien::Expat->libs') -brtl"
4. 编译安装并验证
执行构建、测试和安装:
make make test make install
验证XML::Parser是否加载正确的库,用AIX的dump命令检查:
dump -X32_64 -H $(perl -MXML::Parser -e 'print $INC{"XML/Parser/Expat.so"}')
输出中需包含Alien::Expat安装路径下的libexpat.so。
5. 离线分发的补充配置
如果要打包离线安装包,需确保Alien::Expat的库文件被包含,且安装前设置AIX的库路径环境变量:
export LIBPATH=/path/to/alien-expat/lib:$LIBPATH
内容的提问来源于stack exchange,提问作者Arnaud Dubois
相关产品推荐
相关产品推荐

