草庐IT

Compress-Archive

全部标签

Linux编译链接选项静态库--whole-archive,--no-whole-archive

文章目录背景定位思路静态库链接选项参考背景在使用cmake构建工程时,目标可执行程序可以正常构建,但是运行不符合预期。可执行程序依赖libtool.a静态库,静态库有个全局map,map中存放注册的回调函数。在可执行程序运行时发现map为空,检查代码逻辑,libtool.a中存在注册行为。定位思路1、通过nm定位出相关符号表在libtool.a中存在,但是在最终可执行程序中不存在。2、不采用静态库编译方式,可执行程序中存在相关符号表,由此确认时编译或者链接存在问题。3、最后排查出是由于–whole-archive链接选项没有加,默认情况下代码中未被调用的符号,因此最终生成的可执行文件中,这些符

java - 错误 : Archive for required library cannot be read or is not a valid ZIP file.

我在设置java项目的构建路径时遇到问题。我目前担任Co-OpIT职位,所以我对这一切有些陌生。我的背景主要是C++,我正在即时学习Java。我对Eclipse(Kepler服务版本1)也有些陌生。我正在处理现有程序的错误,需要构建程序以便我可以处理它。当我添加所有我知道确实是正确的外部.jar文件时,我在其中两个上收到此错误:“所需库的存档:‘(文件位置)’无法读取或不是有效的ZIP文件”我团队中的另外两个全职人员已经让程序运行那些完全相同的.jar文件,一个运行EclipseIndigo,另一个运行与我相同的Kepler版本。我还能够手动打开这两个.jar文件,一切似乎都在那里。每

java - eclipse Maven 错误 : Archive for required library in project cannot be read or is not a valid ZIP file

在使用springwebmvc的eclipsemaven项目中,我在标记选项卡中收到以下错误:Archiveforrequiredlibrary:'D:/mypath/.m2/repository/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar'inproject'DocumentManager'cannotbereadorisnotavalidZIPfile我已经检查过,jar文件实际上存在于指定的url中。我什至复制了jar的备份以覆盖该位置的jar文件,但这也没有消除错误。我强制更新maven,并没有解决问题。我也重新启动了eclipse没

java - wget/curl 从 Oracle Archive 页面下载 Oracle Java 7 SDK

StackOverflow和其他社区(AskUbuntu、Unix和Linux等)上有很多帖子提供有关如何使用wget或cUrl自动下载来自Oracle网站的Java发行版。它们都涉及发送一个cookie,该cookie假装一个人接受了通常必须在真正的下载链接出现之前手动执行的许可协议(protocol)。但是,在尝试下载最近已移至OracleArchivepage的Java7SDK时,这些对我都不起作用。.如果我进入这个页面,手动接受许可协议(protocol),然后复制一个下载链接,它看起来是这样的:http://download.oracle.com/otn/java/jdk/7

C++ 64 位 - 无法读取符号 : Archive has no index; run ranlib to add one

我正在尝试使用静态库在LinuxRHAS5.364位上生成一个非常简单的二进制文件。test1.cpp,生成的.o将被嵌入到静态库中。voidctest1(int*i){*i=5;}和prog.cpp#includevoidctest1(int*);intmain(){intx;ctest1(&x);printf("Valx=%d\n",x);return0;}如果我用32位编译,没问题:--(0931:Wed,06Apr11:$)--g++-m32-Wall-cctest1.cpp--(0931:Wed,06Apr11:$)--filectest1.octest1.o:ELF32-b

c++ - Boost Serialization - 不再反序列化损坏的数据时没有 archive_exception?

几个月前我实现了一个组件,它通过UDP网络接收数据,通过Boost::Serialization反序列化它并开始处理传入的对象。在使用这个组件一段时间后发生了随机崩溃,当我发现其他人正在向我的UDP端口发送数据时我可以解决这个问题。我通过简单地在反序列化周围添加一个try/catch解决了这个问题:try{boost::archive::text_iarchiveinputArchive(incomingData);inputArchive>>givenElements;//theactualdeserialization,heretheexceptionhasbeenthrownin

c++ - boost::serialization Archive::register_type 如何工作?

boost::serialization能够序列化它们最派生类的多态对象,即使这些对象由指向基类的引用/指针指向。这不需要虚函数。要做到这一点,boost::serialization需要知道存在的多态类型:Archive::register_type必须在Archive用于序列化的对象。Thisexample展示了如何注册类型以及如何序列化它们。我想知道这是如何实现的。我试图查看boost::serialization源代码但失败了:我不太擅长模板元编程。 最佳答案 boost.serialization可以使用typeid()或

c++ - boost::archive::binary_oarchive 如何处理枚举?

我有以下枚举enumExample:uint8_t{First=1,Second=2,};和一个字符串流:std::stringstreamstream;boost::archive::binary_oarchivear(stream);现在我注意到,如果我序列化一个枚举:arboost序列化4字节(在本例中为0x01、0x00、0x00、0x00)位,而不是uint8_t所需的8位(0x01)。有什么办法可以避免这种情况吗?我的意思是,我知道我可以将该枚举转换为uint8_t,但这种接缝不是很巧妙(如果必须这样做,我必须更改很多东西)。谢谢和问候 最佳答案

c++ - append 到 gzip 压缩的 Tar-Archive

我写了一个程序,生成一个tarball,它被zlib压缩。每隔一段时间,同一个程序应该向tarball添加一个新文件。根据定义,tarball需要空记录(512字节block)才能在它的末尾正常工作,这已经表明了我的问题。根据文档gzopen无法在r+模式下打开文件,这意味着我不能简单地跳转到空记录的开头,append我的文件信息并用空记录再次密封。现在,我已经束手无策了。只要不涉及空记录,append就可以在zlib上正常工作,但我需要它们来“完成”我的压缩tarball。有什么想法吗?啊,是的,如果我能避免解压整个东西和/或解析整个tarball,那就太好了。我也对我可以实现的其他

c++ - 使用 boost::archive 和 boost::iostreams 来压缩数据

我想为一个可以选择性地压缩数据的类编写一个序列化函数。我想使用boost::iostreams中提供的压缩工具。有谁知道如何做到这一点?structX{X(){}templatevoidserialize(Archive&ar,constunsignedintversion){ar&compression;if(compression==0){ar&data;}elseif(compression==1){//useboost::iostreamcompression//facilitiestoserializedata}}intcompression;std::vectordata;