我在尝试给一个python模块sherpa打包的时候遇到的。在按照 官方文档 说的装好编译依赖并执行 python setup.py install --root=${主目录下自定义的一个地方} --prefix=/usr 后编译安装是成功的。然后我按照Python打包的说明写PKGBUILD,然后makepkg,结果却报错
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../lib/Scrt1.o:在函数‘_start’中:
(.text+0x20):对‘main’未定义的引用
collect2: 错误:ld 返回 1
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../lib/Scrt1.o:在函数‘_start’中:
(.text+0x20):对‘main’未定义的引用
collect2: 错误:ld 返回 1
error: Command "/usr/bin/gfortran -Wall -g -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now build/temp.linux-x86_64-3.6/build/src.linux-x86_64-3.6/sherpa/optmethods/src/_minimmodule.o build/temp.linux-x86_64-3.6/build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/sherpa/optmethods/src/fortranobject.o build/temp.linux-x86_64-3.6/sherpa/optmethods/src/minim.o build/temp.linux-x86_64-3.6/sherpa/optmethods/src/syminv.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../lib -L/usr/lib -lpython3.6m -lgfortran -o build/lib.linux-x86_64-3.6/sherpa/optmethods/_minim.cpython-36m-x86_64-linux-gnu.so" failed with exit status 1
我对c很不熟悉,不知道这两种编译过程有什么差别?会是什么问题导致只有makepkg的时候报错呢?
这里是是我的PKGBUILD:http://fars.ee/kRaR
最近编辑记录 天苯 (2018-02-04 16:06:17)
用了几年Arch却毫无长进的小白,请各路菊苣们多多关照……
离线
这是 Fortran 不是 C。
似乎是少了 -shared 参数?
离线
参考 numpy 的 PKGBUILD,加上 export LDFLAGS="$LDFLAGS -shared" 吧。
离线
参考 numpy 的 PKGBUILD,加上 export LDFLAGS="$LDFLAGS -shared" 吧。
加上了:http://fars.ee/7EG2,然后连check都过不去了……
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... configure: error: in `/home/benzene/{目录太长略去不写}/python-sherpa/src/sherpa-4.9.1/extern':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.
用了几年Arch却毫无长进的小白,请各路菊苣们多多关照……
离线
咦,用到了 autotools。
自己手动 patch 吧。心情不好,不深入研究了。
离线
咦,用到了 autotools。
自己手动 patch 吧。心情不好,不深入研究了。
噢好的,我去试着学学……
最近编辑记录 天苯 (2018-02-04 17:31:51)
用了几年Arch却毫无长进的小白,请各路菊苣们多多关照……
离线
makepkg 在 /etc/makepkg.conf 里自带的默认的 LDFLGAS,尝试把 LDFLAGS 清空了再编译?
离线
makepkg 在 /etc/makepkg.conf 里自带的默认的 LDFLGAS,尝试把 LDFLAGS 清空了再编译?
在python setup.py 前加了一句export LDFLAGS="",好像并没起到什么作用……
用了几年Arch却毫无长进的小白,请各路菊苣们多多关照……
离线
makepkg 在 /etc/makepkg.conf 里自带的默认的 LDFLGAS,尝试把 LDFLAGS 清空了再编译?
啊,改成了unset LDFLAGS,编译过了……感谢大佬!
用了几年Arch却毫无长进的小白,请各路菊苣们多多关照……
离线