繁体   English   中英

涉及Glib2库的C程序编译问题?

[英]C Program Compilation issue involving Glib2 library?

我正在尝试在远程服务器上编译以下项目

我已经在名为“ scode”的文件夹中克隆了该项目。

该项目需要glib2和gsl库。 由于我试图在远程服务器上进行编译,因此我没有sudo特权。 因此,我无法使用工具为我安装glib2和gsl。

结果,我在文件夹“ scode / gsl”和“ scode / glib”下手动编译了gsl和gslib2。

我不得不修改Makefile并将这些目录的绝对路径添加为-I选项。

尽管如此,当我尝试编译最终的可执行文件时。 我收到以下错误:

[dyuret @ psglogin代码] $ make

gcc -O3 -D_GNU_SOURCE -Wall -std = c99 -I。 -I / home-2 / dyuret / scode / gsl -I / home-2 / dyuret / scode / glib / pkg-config --cflags glib-2.0 scode.o svec.o pkg-config --libs glib-2.0 lm -lgsl -lgslcblas -o scode

//home-2/dyuret/scode/glib/glib/libglib-2.0.la:无法识别文件:无法识别文件格式

collect2:错误:ld返回1退出状态make: * [scode]错误1

我已经研究了这个问题。 链接看起来很有用,但是我不能完全理解作者在说什么,因为我对编译器,libtools和一般的编译流程并不了解。

任何帮助将非常感激。 我已经在这个问题上花了一些时间,但并没有取得太大进展。

听起来好像您在非默认(即,非系统)位置编译库所做的操作可能是错误的。

对于使用autoconf的软件包(即,在源根目录中具有configure脚本的软件包),应使用--prefix选项设置为./configure来设置要安装软件包的目标位置。

使用构建共享库的软件包,通常必须执行make install步骤,这听起来好像您没有做。

抱歉,这些内容有点复杂。

我小组的某个人帮助我解决了这个问题。 这是他大致执行的步骤:

(1)在$ HOME目录中手动安装glib和其他库-即$ HOME / lib,$ HOME / include。

(1.1)我认为他是通过'./configure prefix = $ HOME','make','make install'来实现的。

(2)摆脱了“ pkg_config”的用法,这导致了我最初概述的问题。 这是他的新CLFAGS和LIBS变量:

CFLAGS=-O3 -D_GNU_SOURCE -Wall -std=c99 -I. -I$$HOME/include -I$$HOME/include/glib-2.0 -I$$HOME/lib/glib-2.0/include
LIBS=-lglib-2.0 -lm -lgsl -lgslcblas -L$$HOME/lib -L/usr/local/cuda/lib64 -lcudart

在此之后,代码编译没有其他问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM