当前位置:  技术问答>linux和unix

【求助】linux 交叉编译 找不到库文件 cannot find -lcurl

    来源: 互联网  发布时间:2017-05-22

    本文导语:  请教大侠们个问题,我用gcc和arm-linux-gcc编译hello world程序都没有问题,但是编译带有库libcurl的上网程序的时候,gcc没问题,但是用arm-linux-gcc就出错了, 我是在虚拟机中的linux系统中运行的 ----------------------------------...

请教大侠们个问题,我用gcc和arm-linux-gcc编译hello world程序都没有问题,但是编译带有库libcurl的上网程序的时候,gcc没问题,但是用arm-linux-gcc就出错了,

我是在虚拟机中的linux系统中运行的
------------------------------------------------------这是交叉编译
[root@fyfyall curl-2]# make
arm-linux-gcc -DDEBUG   -c -o getinmemory.o getinmemory.c
arm-linux-gcc getinmemory.o -o getin -L/usr/lib/libcurl.so -lcurl
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: warning: library search path "/usr/lib/libcurl.so" is unsafe for cross-compilation
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/lib/libcurl.so when searching for -lcurl
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /usr/local/arm/4.3.2/arm-none-linux-gnueabi/bin/../lib/libcurl.so when searching for -lcurl
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lcurl
collect2: ld returned 1 exit status
------------------------------------------------------这是gcc 编译及运行
[root@fyfyall curl-2]# make
gcc -DDEBUG   -c -o getinmemory.o getinmemory.c
gcc getinmemory.o -o getin -L/usr/lib/libcurl.so -lcurl

[root@fyfyall curl-2]# ./getin
10437 bytes retrieved

运行也没问题
就是交叉编译就不行了,交叉编译如果就一句hello world 也是没问题的
但是有库就不行了
不知道有库时候要注意什么
------------------------------------------------------
[root@fyfyall curl-2]# ls /usr/lib | grep libcurl*
libcurl.so
libcurl.so.4
libcurl.so.4.1.1
------------------------------------------------------这是源文件
#include 
#include 
#include 

#include 

struct MemoryStruct {
  char *memory;
  size_t size;
};


static size_t
WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
  size_t realsize = size * nmemb;
  struct MemoryStruct *mem = (struct MemoryStruct *)userp;

  mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1);
  if(mem->memory == NULL) {
    /* out of memory! */
    printf("not enough memory (realloc returned NULL)n");
    return 0;
  }

  memcpy(&(mem->memory[mem->size]), contents, realsize);
  mem->size += realsize;
  mem->memory[mem->size] = 0;

  return realsize;
}


int main(void)
{
  CURL *curl_handle;
  CURLcode res;

  struct MemoryStruct chunk;

  chunk.memory = (char *)malloc(1);  /* will be grown as needed by the realloc above */
  chunk.size = 0;    /* no data at this point */

  curl_global_init(CURL_GLOBAL_ALL);

  /* init the curl session */
  curl_handle = curl_easy_init();

  /* specify URL to get */
  curl_easy_setopt(curl_handle, CURLOPT_URL, "http://www.baidu.com/");

  /* send all data to this function  */
  curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);

  /* we pass our 'chunk' struct to the callback function */
  curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);

  /* some servers don't like requests that are made without a user-agent
     field, so we provide one */
  curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");

  /* get it! */
  res = curl_easy_perform(curl_handle);

  /* check for errors */
  if(res != CURLE_OK) {
    fprintf(stderr, "curl_easy_perform() failed: %sn",
            curl_easy_strerror(res));
  }
  else {
    /*
     * Now, our chunk.memory points to a memory block that is chunk.size
     * bytes big and contains the remote file.
     *
     * Do something nice with it!
     *
     * You should be aware of the fact that at this point we might have an
     * allocated data block, and nothing has yet deallocated that data. So when
     * you're done with it, you should free() it as a nice application.
     */

    printf("%lu bytes retrievedn", (long)chunk.size);

    //printf("%s",chunk.memory);
    //printf("百度推广您的产品n");
  }

  /* cleanup curl stuff */
  curl_easy_cleanup(curl_handle);

  if(chunk.memory)
    free(chunk.memory);

  /* we're done with libcurl, so clean it up */
  curl_global_cleanup();

  return 0;
}
------------------------------------------------------这是makefile文件
OBJ=getinmemory.o
#CC=arm-linux-gcc
CC=gcc
CFLAGS= -DDEBUG
all: getin
getin: $(OBJ)
$(CC) $^ -o $@ -L/usr/lib/libcurl.so -lcurl

clean:
$(RM) *.o getin
------------------------------------------------------

|
先用交叉编译环境编译一下libcurl,然后编译你的程序的时候修改一下makefile,注意给链接器的参数-L./path_to_cross_libcurl将-L参数的数值修改为刚才生成的libcurl.so或者libcurl.a的路径。

|
那个库应该用arm-linux-gcc编译出来的动态库吧,你这里用电脑的怎么行呢

    
 
 

您可能感兴趣的文章:

  • [求助]请问有没有方法将库文件(.a)中的某一部分提取出来?
  • 求助:如何添加第三方的库文件
  • rh8编译内核出错!求助!
  • 系统FC10 我想装tar.gz的源码文件。但在编译是总是出错。求助
  • 求助 有人能给个编译好的,可直接运行的 发包测试软件吗
  • redhat9.0编译的新核心不能启动,求助!
  • ubuntu 10.10环境下的交叉编译求助
  • 求助:关于gcc的预编译头
  • 新手求助!编译libmad包时的错误!
  • 求助:编译的头文件问题
  • gcc编译时出错,gcc: installation problem, cannot exec `as': 没有那个文件或目录!!!求助呀呀!!!!!
  • 求助,编译出错!
  • 如何编译包中的java文件?【求助】
  • 编译内核时出现的一个问题,求助!
  • 求助 程序中添加互斥锁代码后编译怎么通不过 ?
  • 求助-FBreader编译
  • 求助一个编译中的/usr/bin/ld错误
  • 编译问题:求助
  • 求助,关于编译驱动进内核的一个问题,实在找不到资料了!
  • 求助,为什么在windows下g++编译出来的文件都很大?
  • 新手求助:如何编译...
  • 求助:程序能编译但不能链接,重新安装了GCC也是那样的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求助!!怎么在linux交叉环境下移植SOAP协议?
  • 求助arm-linux-gcc-3.4.1 如何交叉编译具有两个依赖库的文件?
  • 求助 有关于cygwinx下的交叉编译器的问题
  • 【求助】交叉编译方面的问题
  • 关于交叉编译的问题【求助】
  • 求助啊!ubuntu 交叉编译器 arm-none-linux-gnueabi-gcc
  • 求助:arm-linux交叉编译c程序出现的几个错误
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!! iis7站长之家
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助~~求助 ~~linux文件读写问题
  • 求助:信号 --13 进程中断
  • 求助,安装了红帽子后进不了
  • 新装linux求助
  • linux的 iptables问题求助
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 一个简单的问题,高分求助!!!
  • 紧急求助:Unix下给文件夹重命名用什么命令?谢谢!!!!
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求助


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3