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

时间:2013-08-23 13:29:13

标签: c gcc compilation glib libtool

我正在尝试在远程服务器上编译the following project

我把git克隆到名为'scode'的文件夹中。

该项目需要glib2和gsl库。因为我正在尝试在远程服务器上编译,所以我没有sudo权限。所以我不能使用工具为我安装glib2和gsl。

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

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

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

  

[dyuret @ psglogin scode] $ 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

我已经研究过这个问题了。这个link看起来很有用,但我不能完全解读作者所说的内容,因为我不熟悉编译器,libtools和编译流程。

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

2 个答案:

答案 0 :(得分:0)

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

对于使用autoconf的软件包(即源根目录中有configure脚本),你应该使用./configure选项make install来设置你想要的目标位置包安装。

使用包构建共享库时,执行{{1}}步骤通常很重要,听起来好像你可能没有这样做。

对于含糊不清的抱歉,这些事情有点复杂。

答案 1 :(得分:0)

我小组的某个人帮我解决了这个问题。以下是他粗略执行的步骤:

(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

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