如何构建一个同时需要libstdc++.so.5和libstdc++.so.6的应用程序?
我想以一个重要的通知来将其置换为我不是c/c ++程序员,并且知道 库的链接如何在C中工作./p> 我们的代码使用libstdc ++.so.6(我认为GCC 3.4).我们有使用libstdc ++.so.5(gcc 2.shote或3.2)的第三方(封闭源)库(封闭的源)库.这是在Linux上.我们有第三方lib的.a和.so版本. 是否可以使用第三方libs构建我们的应用程序?如何?是否可以在没有libstdc ++的情况下构建/运行我们的应用. 如果我忘记了一些关键信息,请让我知道 - 我几乎不知道与这些东西有关.我意识到一个完整的答案可能是不可能的.我真的在寻找指导和指导.静态链接此链接,动态,重建该,pre build So-So,切换到X版本或Symlink quizdoodle等. 更新: 我们尝试使用dlopen与RTLD_LOCAL使用dlopen将第三方库与应用程序的其余部分隔离.这似乎具有的主要作用,但是,由于未知原因,我们的内存泄漏留下了较
20 2024-04-04
编程技术问答社区
如何使用stdlibc++为OS X 64b平台编译boost?
我想使用STDLIBC ++编译Mac OS X 10.9的Boost.我运行以下命令: ./b2 threading=multi link=static runtime-link=static cxxflags="-stdlib=libstdc++" linkflags="-stdlib=libstdc++" 构建成功完成;但是,我的应用程序构建在链接时间失败了,当它找不到符号吸吮为std :: __ 1 :: locale :: use_facet,std :: __ 1 :: basic_string等. 我的问题是,如何使用STDLIBC ++? 编译OSX 64B平台的提升 更多信息: 我注意到编译过程中以下日志: /applications/xcode.app/contents/developer/toolchains/xcodedefault.xctoolchain/usr/bin/bin/ranlib:file:bin.v2/libs/fi
16 2024-04-02
编程技术问答社区
C++11的随机数分布在不同的平台上不一致--有什么替代方案?
我正在寻找一组标准C ++ 11引擎的便携式分布/Random" rel =" noreferrer"> http://en.cppreference.com/w/cpp/numeric/random ). 引擎实现始终执行(即在不同平台上生成的相同顺序 - 用Clang和MSVC测试),但是分布在不同平台上的实现方式似乎有所不同. 因此,即使发动机产生相同的顺序,也似乎在不同平台上使用相同数量的样本(即产生不同的结果),这似乎是不可接受的就我而言. 我可以使用C ++ 11个随机模板的第三方lib,但这将在流行平台上提供一致的值(查看跨GCC,MSVC和Clang/LLVM的支持). 我到目前为止查看的选项是: boost. 从libstd ++克隆(也值得且可能是便携的,但拔出特定功能可能并不简单) 创建我自己的C ++ 11式随机分布 我需要统一,正常,毒和雷利. 解决方案 我创建了自己的C ++ 11发行版: template
20 2024-04-02
编程技术问答社区
在使用libstdc++进行调试时,强制使用std::atomic内部的锁
我已经做了一些Google,似乎无法提出 GCC 选项或 libstdc ++ 宏.是否可以强制在所有std::atomic模板专业方面内部锁定.在某些平台上,无论如何,某些专业都在锁定,所以这似乎是一个可行的选择. 过去,我发现使用std::atomic的使用非常痛苦DRD )由于大量的误报.如果原子的使用足够普遍,则抑制文件似乎不是一个非常可扩展的解决方案. 解决方案 没有办法,afaik. GCC通过无锁的内置功能(__atomic_fetch_add,__atomic_test_and_set等)实现C ++ 11原子.根据计算机定义中可用的内容,GCC可能会发出一些有效的INSN序列,或者作为最后的度假胜地,使用比较和交换环路.如果没有任何有用的可用,GCC只是向具有相同名称和参数的外部功能发出调用. ps.实际上,您可以使用-m32 -march=i386编译并为自己提供所需的外部功能.
14 2024-03-18
编程技术问答社区
C++11:用atomic<bool>成员编写移动构造函数?
我有一个具有原子成员变量的课程: struct Foo { std::atomic bar; /* ... lots of other stuff, not relevant here ... */ Foo() : bar( false ) {} /* Trivial implementation fails in gcc 4.7 with: * error: use of deleted function ‘std::atomic::atomic(const td::atomic&)’ */ Foo( Foo&& other ) : bar( other.bar ) {} }; Foo f; Foo f2(std::move(f)); // use the move 应该如何移动构造函数? gcc 4.7不喜欢我的任何尝试(例如other.bar周围添加std::move()
12 2024-03-18
编程技术问答社区
/usr/lib64/libstdc++.so.6: 版本`GLIBCXX_3.4.15' 未找到
我正在尝试运行Appium测试.但是,我会出现错误: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found 我正在使用redhat6.6.当我运行时: strings /usr/lib/libstdc++.so.6 | grep GLIBC 我明白了: GLIBC GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBC_2.0 GLIBC_2.3 GLIBC_2.4 GLIBC_2.1 GLIBC_2.1.3 GLIBC_2.3.2 GLIBC_2
34 2024-03-02
编程技术问答社区
一个应用程序可以依赖两个不同版本的libstdc++吗?
应用程序可以同时依赖两个不同版本的libstdc ++版本吗? (例如:libstdc ++ 5和libstdc ++ 6)?场景是 - 一些二进制取决于libstdc ++ 6,但加载一个.so,其依赖于libstdc ++ 5 ... 那会有机会工作吗? 解决方案 最重要的是,您需要检查库的这两个版本是否兼容. G ++ 3.3和3.4不是. 即使是: *可能有名称杂交问题 *您不能进行交叉模块分配/交易(无论如何是一个坏主意) *您可能无法使用STL 处理模块 其他解决方案 我最近仅将C ++应用程序从AS3/GCC323移植到AS4/GCC346.尽管该应用本身链接到libstdc ++.so.6它链接到的某些库仍链接到libstdc ++.so.5.当我尝试运行它时,depsite构建成功. 一旦我在AS4/GCC346上重新编译了库后,应用程序和库仅链接到libstdc ++.So.6,而SEGV不再发生. 所以我会说答案是不,你不能链接
8 2024-02-27
编程技术问答社区
将C++应用程序移植到安卓系统
是否可以将广泛使用STL的C ++应用程序移植到Android?我知道当前NDK不支持这一点,但是是否有任何努力(开源或其他方面)实现这一目标? 如果没有,有一种方法可以将Android的libstdc ++交叉吗? 更新: NDK修订5承诺基于STLPORT的默认STL实现. ,http://developer.android.com/sdk/ndk/index.html>和修订说明. 解决方案 您可能需要从 dmitry moskalchuk修改的ndk (包括对异常,RTTI和标准C ++库的支持).请记住,如果您走这条路,您的应用程序的大小将大大,因为您将静态地将C ++库链接到其中.另外,此线程在如何合并STL的情况下给出更好的方向. 其他解决方案 您可以随时实施自己需要的东西. STL仅使用CRT,OS标头和标准C ++编写.这取决于您需要做什么.
16 2024-02-17
编程技术问答社区
Android SDK-aapt错误:libstdc++.so.6无法打开共享对象文件
我正在创建一个新的项目,用于测试目的,将所有参数留在新的ADT安装上(Ubuntu Gnome 14.04 LTS,X86_64 CPU),但是I在Eclipse控制台中有以下错误: [2014-06-11 09:03:10 - Kronos] /home/erwan/Applications/ADT/adt-bundle-linux-x86_64-20140321/sdk/build-tools/19.1.0/aapt: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory 这是我已经尝试过的: - >我尝试通过Ubuntu软件存储库来安装IA32-LIBS,LIBSTDC ++和LIBSTDC ++ 6 - >检查是否进行更新(Eclipse和SDK):无更改 - >重新安装所有Androi
18 2024-01-28
编程技术问答社区
如何在两个容器的元素之间进行成对的二进制操作?
假设我有两个向量std::vector a, b;我知道大小相同. 在所有a和b的成员之间都有C ++ 11范式,并将结果放入std::vector c;? 中 解决方案 lambda应该做一个技巧: #include #include std::transform(a.begin(), a.end(), // first b.begin(), // second std::back_inserter(c), // output [](uint32_t n, uint32_t m) { return n & m; } ); 更好,多亏了@Pavel和C ++ 98: #include std::transform(a.beg
12 2024-01-22
编程技术问答社区
Mac上libstdc++中的C++11标准库
在我目前正在从事的Xcode项目中,我使用的是Apple LLVM 4.2(Clang)编译器的C ++ 11,并使用LibstDC ++作为我的标准库,因为我使用的是未编译的库(NTL)使用libc ++,因此我必须使用libstdc ++. 编写以下代码时: #include int main() { return 0; } 它不会通过说: 来编译 'regex' file not found ,所以我无法使用我的libstdc ++使用任何C ++ 11库(尝试, ASWELL). 我试图服用的另一个是用CC和libc ++重新编译NTL,但这似乎并不可用.以下是产生的一些错误: ../include/NTL/config.h:57:5: error: expected value in expression #if ^ ../include/NTL/config.h:88:5:
32 2023-12-19
编程技术问答社区
当使用std::function和std::bind时,EXC_BAD_ACCESS。
使用std :: function with std :: bind升级到Xcode 5后,似乎正在生成exc_bad_access异常.看来STD ::函数的实现中的__base指针最终是无效的,导致不良访问,但是我不清楚为什么会这样.有人对我做错了什么有洞察力? 这是说明问题的示例代码. struct A { void foo(bool b) { std::cout b = std::bind(&A::foo, std::placeholders::_1,
16 2023-12-19
编程技术问答社区
IOS7(仅限)stdlibc++链接问题
我需要帮助. 我有一个使用STDC ++的框架,例如STD:String. 现在,当我为ios7创建新应用时,链接此框架的问题是因为STDC ++ lib的问题: 架构ARMV7的未定义符号 " std :: basic_string,std ::分配器> :: _ rep :: _ s_empty_rep_storage",从... 引用 我发现一些奇怪的是,当我将倾向目标更改为此应用程序中的ios6时,一切都很好. 使用ios7,我看到错误. 我已经在其他链接器标志中设置了标志:-lstdc ++ 知道Ami做错了什么? 解决方案 只是此答案的更新: 这个步骤非常重要! 确保 c ++标准库设置为 libstdc ++(gnu c ++标准库)在Apple LLVM 5.0编译器构建设置 中 背景: 我有一个iOS应用程序,该应用程序突然停止使用标准库链接错误为iOS 7构建.我一直在模拟器和iPad mini上成功测试该应用程序,
14 2023-12-18
编程技术问答社区
如何实现std :: feek_ptr ::用原子操作锁定?
我最近尝试在C中实现一个原子参考计数器,因此我提到了STL中的std :: Shared_ptr的实现,并且我对feek_ptr :: lock的实现感到非常困惑. 执行比较时_and_exchange时,clang指定的memory_order_seq_cst,g ++指定的memory_order_acq_rel和msvc指定的memory_order_order_relaxed. 我认为Memory_order_Relaxed已经足够了,因为如果USER_COUNT为非零,则不需要同步. 我不是这个领域的专家,任何人都可以提供一些建议? 以下是代码段: bool _Incref_nz() noexcept { // increment use count if not zero, return true if successful auto& _Volatile_uses = reinterpret_cast(_Uses); #ifdef
14 2023-11-20
编程技术问答社区
检查C++11库的特性
什么是检查是否存在标准库的特定C ++功能的好方法. 对于编译器功能,我刚刚通过检查(IMHO)主要编译器的编译器版本( vc ++ , gcc , clang 目前,也许是 intel )尽管这不是最好,最灵活的方法,但除了 clang ,我还不知道什么不错的__has_feature宏. ,但对于图书馆功能而言,这甚至更糟,这些功能并没有与编译器那样牢固地耦合.目前,我想使用相同的方法来检查编译器版本的 vc ++ (如果它使用自己的库,它很容易).对于 clang ,我至少可以使用__has_include进行基于大型标头的查询.除此之外,我想检查__GLIBCXX__的值(如果定义)可能是一个好主意,但是我再也找不到任何特定 libstdc ++ 版本引入的信息支持. 应将方法保留为预处理器检查等,因为我想在不使用任何Sophiticitic的配置过程中使用并且不使用任何第三方库(是,是,是, boost 是第三方). 因此,在这些条件(相当狭窄)条件下,
28 2023-11-20
编程技术问答社区
如何获得msvc所需的运行时库的位置
我对CMAKE有自定义包装器,这些包装器对各种平台(Win32,Sunos等)和不同的编译器进行配置,编译和创建分布.我需要放入分布中所有需要的运行时库(libgcc_so,libstdc ++.因此,对于 *nix,msvcr90.dll,msvcp100.dll for win32).例如,GCC具有机制,该机制允许获取这些库的全名: # get location of libgcc_s of default compiler bash-3.2$ g++ -print-file-name=libgcc_s.so /usr/local/lib/gcc/sparc-sun-solaris2.10/3.4.6/../../../libgcc_s.so # get location of libstdc++ of custom compiler bash-3.2$ g++-4.5.3 -print-file-name=libstdc++.so /u/gccbuild/installe
14 2023-11-20
编程技术问答社区
helgrind(valgrind)可以在c++11期货中使用吗?
当将Helgrind与C ++ 11期货和包装任务一起使用时,我认为我认为是假阳性的.以下是CentOS6系统上的GCC-6.3.0和Valgrind-3.12.我试图遵循文档中的建议以提供注释.我做错了吗?我应该怎么做才能避免误报,还是真的有种族? drdws0134$ cat hthread.cpp #include #define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(addr) ANNOTATE_HAPPENS_BEFORE(addr) #define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(addr) ANNOTATE_HAPPENS_BEFORE(addr) #define _GLIBCXX_EXTERN_TEMPLATE -1 #include "thread.cc" drdws0134$ cat bleep.cpp #include
30 2023-11-12
编程技术问答社区
malloc_consolidate (malloc.c)中的分段故障,Valgrind没有检测到。
我的程序发生分割错误,我找不到原因. 最糟糕的部分是,所讨论的功能并不总是导致segfault. GDB确认错误并产生此回溯: Program received signal SIGSEGV, Segmentation fault. 0xb7da6d6e in malloc_consolidate (av=) at malloc.c:5169 5169 malloc.c: No such file or directory. in malloc.c (gdb) bt #0 0xb7da6d6e in malloc_consolidate (av=) at malloc.c:5169 #1 0xb7da9035 in _int_malloc (av=, bytes=) at malloc.c:4373
50 2023-11-12
编程技术问答社区