`
rikugun
  • 浏览: 351185 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

参数过长,导致编译自定义函数库报错

阅读更多

编译自定义函数库报错



ar: not found

make: The error code from the last command is 1.


环境:

AIX 5.2
xlc
oracle10g
tuxedo8.1

检查发现是编译时
执行 make

在链接对象的时候命令行参数过长

ar -X64 rcu libdb_ia.a  DB_CommEmpWeb.o DB_LifeUserAttr.o  DB_InfoNetCardSale.o DB_LogInfoNetCardSale.o … #LONG ARGS


查看系统参数上限

$ getconf ARG_MAX
24576


但是我们的Makefile文件 不带空格都已经23539 个字符了,导致系统无法成功调用 ar命令

$ wc -c Makefile
   23539 Makefile



修改Makfe的思路,不再把所有 .o 文件写在 一个命令中,修改为, 逐行写入一个.o 文件名 至 OBJ_LIST文件,然后读取此文件,逐个打包

同时,Makefile 文件 改为


$(LIB_FILE) :
        cat OBJ_LIST|while read line; do ar  -X64 rcu $(LIB_FILE) $$line; done


编译完后检查有没有正确的打包文件

ar -vt $(LIB_FILE)
分享到:
评论

相关推荐

    自定义算子出现未注册的报错

    4. 编译错误:自定义算子的源码可能存在编译错误,导致生成的库文件无法被正确加载。 5. 导入错误:在Python环境中,如果未正确导入自定义算子的相关模块,也会导致未注册错误。 三、解决未注册错误的策略 1. ...

    在ICC中制作和使用自定义C库文件

    在创建了初步的库文件之后,可以继续在现有库中增加新的自定义函数。这可能需要在现有源代码文件中添加新的函数实现,并更新头文件中的声明。然后重复编译和链接过程来生成新的库文件。 8. 手动与自动链接的区别: ...

    release模式正常debug模式下报错.docx

    因此,确保自定义消息处理函数正确声明所有参数至关重要。 有时,代码在Release模式下运行无误,但在Debug模式下报错,这通常是因为Debug模式中使用了大量的ASSERT语句,这是一种只在Debug模式下生效的断言宏,用于...

    比较全的汇编编译报错信息

    3. **检查依赖**:如果涉及到函数调用或外部库,确保这些依赖项已正确引入并链接。 4. **查阅文档**:不确定某些语法或类型时,查阅汇编语言的官方文档或权威教程以获取帮助。 通过以上的分析和解决策略,你应该...

    iperf-2.0.5编译要点

    - 将`#define malloc rpl_malloc`改为`/* #undef malloc */`,这使得iperf使用系统的`malloc`实现而非自定义的内存分配函数。 3. **执行`make`命令进行编译** - 使用`make -j4`命令进行并行编译,其中`-j4`表示...

    hadooop-2.6.0 在64位机器编译后的 native 源码

    3. **头文件(.h)**: 提供了与C/C++接口交互的函数定义,用于编写自定义的Hadoop MapReduce任务或其他扩展。 4. **Makefile或构建脚本**: 描述了如何编译和链接这些库的指令。 5. **README或其他文档**: 提供了编译...

    本科教材\1\c++程序设计 陈圣国\第4章.ppt

    然而,有时需要在C++程序中调用C语言编写的函数库,这时就需要使用`extern "C"`来指示编译器以C语言的方式来处理函数名,以确保跨语言的兼容性。在头文件中,可以使用条件编译指令来适配C++和C编译器。 4.2 运算符...

    WinCC调用自定义DLL.rar

    在用户程序中,你可以通过“调用外部程序”(Call External Program)功能,指定你刚才编译生成的DLL文件及其入口函数。这里的入口函数就是你在DLL中导出的那个特定函数,它将执行你编写的控制逻辑。 为了实现具体...

    程序设计-函数的声明与函数的原型.pptx

    对于用户自定义的函数,如果没有在调用前定义,那么需要在主调函数中进行声明,就像在`main`函数中对`max`函数所做的那样。 总的来说,理解和正确使用函数声明与函数原型是编写有效且可维护的C程序的基础。它们允许...

    c语言函数题

    用户可以创建自己的库,包含自定义函数,通过`#include`指令引入。 12. 重载函数: C语言不支持函数重载,即在同一作用域内定义多个同名但参数列表不同的函数。这是C++的一个特性。 13. 局部静态变量: 在函数...

    OpenWrt-SDK--利用SDK生成自己的ipk安装包

    3. 针对特定发行版编译自定义软件:开发者可以将自定义的补丁或者不同的特性整合到现有的软件包中,以实现个性化的定制。 OpenWrt-SDK包含了一个精简版的OpenWrt构建环境(buildroot),这意味着用户无需从头开始...

    android ApiDemos不报错版本

    《Android ApiDemos不报错版本:探索与学习》 Android ApiDemos是Android平台上的一个官方示例项目,它为开发者提供了丰富的API演示,涵盖了Android系统中的各种控件和功能,是学习和理解Android开发的宝贵资源。这...

    lombok.jar(支持开发工具对“@Data”缺少插件而报错问题)

    标题提到的“lombok.jar”是Lombok库的可执行JAR文件,通常用于开发环境中,解决因缺少Lombok插件导致的编译错误。 在Java开发中,编写getter和setter等重复代码是常见现象,这不仅耗费时间,还可能增加代码维护的...

    C语言几个预编译指令的用法

    前者通常用于包含标准库头文件或编译器自带的头文件,后者则用于包含当前项目中的自定义头文件。预处理程序会在编译前将这些头文件的内容展开到源文件中相应的位置。 二、宏定义指令 1. #define:这是定义宏的基本...

    vc2010下用的egg库

    例如,你可以使用库中的函数读取图像,然后通过迭代图像的每个像素,进行自定义的处理,再保存结果。这在进行复杂的图像分析和处理算法实现时非常有用。 此外,Egg库可能还支持多种图像格式,如JPEG、PNG、BMP等,...

    关于Fluent:nmake不是内部命令或外部命令,也不是可运行程序

    在 Fluent 中,UDF(User-Defined Function)是一种自定义函数,可以用于扩展 Fluent 的功能。编译 UDF 需要使用 VC++,并正确设置环境变量。否则,可能会出现各种错误,如“nmake”不是内部命令或外部命令,也不是...

    解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题

    当模型定义中包含自定义的度量函数,如`top_2_accuracy`,在加载模型时需要提供这些自定义函数。可以通过`custom_objects`参数来传递: ```python from keras.models import load_model from keras.metrics import ...

    xgboost及其参数说明

    5. **验证安装**:安装完成后,可以在Python环境中导入xgboost库,运行`import xgboost as xgb`,如果没有报错,则表示安装成功。 **二、XGBoost参数说明** XGBoost的参数众多,每个参数都会对模型的性能产生影响...

    init_array教程

    这通常通过自定义链接器脚本实现,或者在编译时使用 `-Wl,-init` 和 `-Wl,-fini` 选项指定初始化和结束函数。 3. 使用GCC属性:`__attribute__((section(".init_array")))` 是GCC的一个特性,它将`my_init`函数放置...

    nvapi for delphi or lazarus

    NVIDIA API,简称nvapi,是NVIDIA公司提供的一套应用程序接口(API),用于与NVIDIA显卡进行低级别的交互,包括显卡控制、性能监控、优化和自定义功能等。在Delphi或Lazarus这样的面向对象的Pascal编程环境中,...

Global site tag (gtag.js) - Google Analytics