linux软件第一次调用动态连接库的时候要延迟几秒,怀疑在突然掉库的时候动态库加载耗费了时间,所以造成延时,遂改为静态库方式,原来的makefile文件是

testmac:
        cp $(IPC_DIR)/libmem.so ./
        cp $(IPC_DIR)/libipc.so ./
        $(CC) $(CFLAGS)  -L. -lmem -lipc   $(MACROS) -I $(SHAREINC_DIR) \
        ./lib/int_sqrt.c \
        ./src/ac_lteTestMac.c \
        ./src/ac_lteTestMacInit.c \
        ./src/ac_lteTestMacThread.c \
        ./src/ac_lteTestPhy2MacMsgHandle.c \
        ./src/ac_lteTestMac2PhyMsgHandle.c \
        ./src/ac_lteTestMacSocketDumpHandle.c \
        ./src/ac_lteTestMacProc.c \
        ./src/ac_lteTestMacSocket.c \
        ./src/ac_lteTestMacCasePostProc.c \
        ./src/ac_lteTestMacStatCalc.c \
        ./src/ac_lteTestMacTimeStamp.c \
        ./src/ac_lteTestMacCmdLine.c \
        ./src/ac_lteTestMac2PhyProc.c \
        ./src/ac_lteTestMacDdrPerTest.c \
        -g -o testmac9131 -Wl,-Map,testmac9131.map

我改为

testmac:
        cp $(IPC_DIR)/libmem.a ./
        cp $(IPC_DIR)/libipc.a ./
        $(CC) $(CFLAGS)  -L. -lmem -lipc   $(MACROS) -I $(SHAREINC_DIR) \
        ./lib/int_sqrt.c \
        ./src/ac_lteTestMac.c \
        ./src/ac_lteTestMacInit.c \
        ./src/ac_lteTestMacThread.c \
        ./src/ac_lteTestPhy2MacMsgHandle.c \
        ./src/ac_lteTestMac2PhyMsgHandle.c \
        ./src/ac_lteTestMacSocketDumpHandle.c \
        ./src/ac_lteTestMacProc.c \
        ./src/ac_lteTestMacSocket.c \
        ./src/ac_lteTestMacCasePostProc.c \
        ./src/ac_lteTestMacStatCalc.c \
        ./src/ac_lteTestMacTimeStamp.c \
        ./src/ac_lteTestMacCmdLine.c \
        ./src/ac_lteTestMac2PhyProc.c \
        ./src/ac_lteTestMacDdrPerTest.c \
        -g -o testmac9131 -Wl,-Map,testmac9131.map

编译失败,/testmac/./src/ac_lteTestMacInit.c:151: undefined reference to `fsl_usmmgr_p2v'

看了网上的一些文章,后面猜想是库的位置不对,因为.c文件依赖后面的.a里面的.o,修改makefile如下

testmac:
        #cp $(IPC_DIR)/libmem.so ./
        #cp $(IPC_DIR)/libipc.so ./
        cp $(IPC_DIR)/libmem.a ./
        cp $(IPC_DIR)/libipc.a ./
        $(CC) $(CFLAGS)   $(MACROS) -I $(SHAREINC_DIR) \
        ./lib/int_sqrt.c \
        ./src/ac_lteTestMac.c \
        ./src/ac_lteTestMacInit.c \
        ./src/ac_lteTestMacThread.c \
        ./src/ac_lteTestPhy2MacMsgHandle.c \
        ./src/ac_lteTestMac2PhyMsgHandle.c \
        ./src/ac_lteTestMacSocketDumpHandle.c \
        ./src/ac_lteTestMacProc.c \
        ./src/ac_lteTestMacSocket.c \
        ./src/ac_lteTestMacCasePostProc.c \
        ./src/ac_lteTestMacStatCalc.c \
        ./src/ac_lteTestMacTimeStamp.c \
        ./src/ac_lteTestMacCmdLine.c \
        ./src/ac_lteTestMac2PhyProc.c \
        ./src/ac_lteTestMacDdrPerTest.c \
        -g -L. -lmem -lipc  -o testmac9131 -Wl,-Map,testmac9131.map

编译通过,问题解决

make文件中静态连接库在command里面的位置的更多相关文章

  1. Qt动态连接库/静态连接库创建与使用,QLibrary动态加载库

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt动态连接库/静态连接库创建与使用,QLibrary动态加载库     本文地址:https ...

  2. VC++静态连接库

    目录 第1章静态连接库    1 1.1 同名函数的选择    1 1.2 模块合并    2 1.2.1 模块替换    4 1.3 内联函数    4 第1章静态连接库 静态连接库与动态连接库一样 ...

  3. mysql如何从全备文件中恢复单个库或者单个表

    mysql如何从全备文件中恢复单个库或者单个表 在mysql dba的日常实际工作中,一个实例下有多个库,而我们常见的备份就是全库备份.那么问题就来了,如果需要恢复单个库或者单个表,怎么办了,网上有很 ...

  4. 从MySQL全备文件中恢复单个库或者单个表

    从MySQL全备文件中恢复单个库或者单个表 提取建库语句 sed -n '/^-- Current Database: db_cms/,/^-- Current Database: `/p' back ...

  5. windows 查看动态连接库和静态连接库的方法

    在window下查看动态库的导出函数可以用vs自带的Dependenc工具: 查看静态库的信息要用命令行来实现: dumpbin   /LINKERMEMBER   Test.lib   >   ...

  6. Modelsim SE自动化仿真——如何将.do文件中自定义的库链接到testbench顶层模块

    我们用Modelsim SE进行仿真时,为了方便,一般会编写.do文件来启动当前仿真.关于.do文件的编写,一般网上都有成型的模板,我们只要稍微改几个参数,就可以符合我们的仿真需求了.但是如果仿真时需 ...

  7. Linux 静态链接库和动态连接库

    (0)文件夹 VMware 下安装Ubuntu的吐血经历 零基础学习Shell编程 Linux下的makefile的妙用 Linux调试神器 -- gdb 十分钟学会Python的基本类型 Linux ...

  8. (C#)WPF:.h(头文件)、.lib(静态链接库文件)和.dll(动态链接库文件)之间的区别与联系

    静态链接库(Lib)与动态链接库(DLL)的区别 静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件:动态链接就是把调用的函数所在文件模块(DLL)和 ...

  9. 制作与使用静态链接库(.lib)文件

    (一)制作.lib文件 (1)打开vs,选择“新建项目”,选择“Visual C++“,选择”Win32 控制台应用程序“. (2)点击”确定“,点击”下一步“,设置如下 (3)点击”完成“,然后就可 ...

随机推荐

  1. Swift - 17 - 数组的初始化

    import UIKit // 声明数组 var array = ["A", "B", "C", "D", " ...

  2. ADO.NET复习——自己编写SqlHelper类

    今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题 ...

  3. 8.模板方法模式-[Head First 设计模式]

    模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. 要点: “模板方法”定义了算法的步骤,把这些步骤的实现延 ...

  4. C++ Built-In Array 的语义

    C++ 编译花了大量精力使得class和原始类(primitive types)的用法一致.比如array的应用: A a[100]:// A is class int b[100]: 虽然a是用户定 ...

  5. cocos2d-x 读取 json 文件并用 jsoncpp 做解析

    一码胜万言(请看注释) CclUtil.h // // CclUtil.h // PracticeDemo // // Created by kodeyang on 8/1/13. // // #if ...

  6. 在VMware安装Centos再安装Oracle数据库(个人学习使用)

    打开VMware 选择稍后安装 自定义安装 小生安装的是64位的Centos 给虚拟机设置名称和安装位置 设置虚拟机打处理器并分配内存(oracle12G我建议内存为2G以上) 网络类型选择仅主机模式 ...

  7. 无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间。

    无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满.请删除不需要的文件.删除文件组中的对象.将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘 ...

  8. php 带cookie登陆

    <?php /** * @version $id */ define('SCRIPT_ROOT',dirname(__FILE__).'/'); $act = trim($_REQUEST['a ...

  9. Deprecated: Call-time pass-by-reference has been deprecated in E:\wamp\www\admin\htdocs\busi.php on line 381

    Deprecated: Call-time pass-by-reference has been deprecated in E:\wamp\www\admin\htdocs\busi.php on ...

  10. Uva 120 - Stacks of Flapjacks(构造法)

    UVA - 120  Stacks of Flapjacks Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld &a ...