您尚未登录。

#1 2018-02-04 16:03:30

天苯
入门小白
所在地: NAOC
注册时间: 2015-10-10
帖子: 67
个人网站

手动编译的时候编译通过,在写成PKGBUILD然后 makepkg编译就报错可能是什么原因?

我在尝试给一个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却毫无长进的小白,请各路菊苣们多多关照……

离线

#2 2018-02-04 16:49:53

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 手动编译的时候编译通过,在写成PKGBUILD然后 makepkg编译就报错可能是什么原因?

这是 Fortran 不是 C。
似乎是少了 -shared 参数?

离线

#3 2018-02-04 16:52:47

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 手动编译的时候编译通过,在写成PKGBUILD然后 makepkg编译就报错可能是什么原因?

参考 numpy 的 PKGBUILD,加上 export LDFLAGS="$LDFLAGS -shared" 吧。

离线

#4 2018-02-04 17:22:27

天苯
入门小白
所在地: NAOC
注册时间: 2015-10-10
帖子: 67
个人网站

Re: 手动编译的时候编译通过,在写成PKGBUILD然后 makepkg编译就报错可能是什么原因?

依云 说:

参考 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却毫无长进的小白,请各路菊苣们多多关照……

离线

#5 2018-02-04 17:23:52

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 手动编译的时候编译通过,在写成PKGBUILD然后 makepkg编译就报错可能是什么原因?

咦,用到了 autotools。
自己手动 patch 吧。心情不好,不深入研究了。

离线

#6 2018-02-04 17:30:38

天苯
入门小白
所在地: NAOC
注册时间: 2015-10-10
帖子: 67
个人网站

Re: 手动编译的时候编译通过,在写成PKGBUILD然后 makepkg编译就报错可能是什么原因?

依云 说:

咦,用到了 autotools。
自己手动 patch 吧。心情不好,不深入研究了。

噢好的,我去试着学学……

最近编辑记录 天苯 (2018-02-04 17:31:51)


用了几年Arch却毫无长进的小白,请各路菊苣们多多关照……

离线

#7 2018-02-05 00:24:48

SilverRainZ
成为非人类
所在地: Arch Linux CN Community
注册时间: 2015-05-01
帖子: 110
个人网站

Re: 手动编译的时候编译通过,在写成PKGBUILD然后 makepkg编译就报错可能是什么原因?

makepkg 在 /etc/makepkg.conf 里自带的默认的 LDFLGAS,尝试把 LDFLAGS 清空了再编译?

离线

#8 2018-02-05 00:49:32

天苯
入门小白
所在地: NAOC
注册时间: 2015-10-10
帖子: 67
个人网站

Re: 手动编译的时候编译通过,在写成PKGBUILD然后 makepkg编译就报错可能是什么原因?

LastAvengers 说:

makepkg 在 /etc/makepkg.conf 里自带的默认的 LDFLGAS,尝试把 LDFLAGS 清空了再编译?

在python setup.py 前加了一句export LDFLAGS="",好像并没起到什么作用……


用了几年Arch却毫无长进的小白,请各路菊苣们多多关照……

离线

#9 2018-02-05 02:20:37

天苯
入门小白
所在地: NAOC
注册时间: 2015-10-10
帖子: 67
个人网站

Re: 手动编译的时候编译通过,在写成PKGBUILD然后 makepkg编译就报错可能是什么原因?

LastAvengers 说:

makepkg 在 /etc/makepkg.conf 里自带的默认的 LDFLGAS,尝试把 LDFLAGS 清空了再编译?

啊,改成了unset LDFLAGS,编译过了……感谢大佬!


用了几年Arch却毫无长进的小白,请各路菊苣们多多关照……

离线

页脚