草庐IT

bytes_so_far

全部标签

c++ - 加载共享库时出错 : libgomp. so.1 : , GCC 版本错误?

在执行第3方C++程序时出现以下错误:加载共享库时出错:libgomp.so.1:无法打开共享对象文件:没有这样的文件或目录libgomp.so.1库是GNU编译器集合OpenMP运行时库。这是GCC包的一部分吗?我可以在具有gcc-4.5的系统上运行该程序,但不能在具有gcc-4.3或gcc-4.6的系统上运行。或者我需要安装另一个包吗?我尝试通过下载库并将其放在LD_LIBRARY_PATH中,在使用gcc-4.3的系统上手动修复此问题,但随后我得到了另一个丢失的库:/usr/lib/libstdc++.so.6:版本`GLIBCXX_3。4.11'未找到。libstdc是GNU标

c++ - 在 mac osx(不是 dylib)上构建真正的 .so/MH_BUNDLE 共享库的 g++ 标志是什么?

我正在尝试在macosx上创建一个.so。似乎有一个distinction在.so和.dylib类型之间。$filesome_real.sosome_real.so:Mach-O64-bitbundlex86_64dynamiclib标志按预期生成dylib$g++-dynamiclib-olibgtest-1.7.0.dylib[my.ofiles]$filelibgtest-1.7.0.dyliblibgtest-1.7.0.dylib:Mach-O64-bitdynamicallylinkedsharedlibraryx86_64####^^^asexpected共享标志没有给出

C++ 如何在 Unix 中获取正在执行的 .so 模块的文件名(和路径)

C++如何在Unix中获取正在执行的.so模块的文件名(和路径)?类似于Windows上的GetModuleFileName的东西。 最佳答案 尽管它不是POSIX标准接口(interface),dladdr()功能在许多系统上都可用,包括Linux,Solaris,Darwin/MacOSX,FreeBSD,HP-UX,和IRIX.此函数获取一个地址,例如可以是指向模块内静态函数的指针(如果转换为void*),并用信息填充Dl_info结构包括包含该地址的共享对象的路径名(在dli_fname成员中)。

c++ - 编译 Qt-base : error: libQt5Core. so.5: 没有可用的版本信息

我是从源代码qt-base编译的。我构建了其中一个测试(tst_qdom),但在执行时出现错误。这是ldd的结果:lddtests/auto/xml/dom/qdom/tst_qdom**tests/auto/xml/dom/qdom/tst_qdom:/usr/lib/x86_64-linux-gnu/libQt5Core.so.5:noversioninformationavailable(requiredbytests/auto/xml/dom/qdom/tst_qdom)tests/auto/xml/dom/qdom/tst_qdom:/usr/lib/x86_64-linux

c++ - std::byte 的用例

这个问题在这里已经有了答案:Whatisthepurposeofstd::byte?(1个回答)关闭4年前。最近将std::byte添加到C++17让我想知道为什么这个类型甚至被添加到标准中。即使看完了thecppreferencereference它的用例对我来说似乎不清楚。我能想到的唯一用例是它更清楚地表达了意图,因为std::byte应该只被视为位的集合而不是字符类型,例如char我们之前用于这两个目的。意思是:这个:std::vectormemory;比这更清楚:std::vectormemory;这是唯一的用例和将其添加到标准的原因,还是我在这里遗漏了一个重点?

c++ - 我如何查看 Linux .so 或 .a 对象并查看它们包含哪些函数?

链接器大概可以做到这一点,那么是否有一个命令行工具可以列出目标文件中的函数并告诉我函数的名称及其签名? 最佳答案 对于共享库,您必须使用:nm-D/path/to/libwhatever.so.没有-D,nm转储debug符号;-D指的是实际用于动态链接的动态符号。来自Ubuntu12session:$nm/lib/i386-linux-gnu/libc.so.6nm:/lib/i386-linux-gnu/libc.so.6:nosymbols$nm-D/lib/i386-linux-gnu/libc.so.6|tail0011f

c++ - 以高效的方式将 C 字符串转换为 std::vector<byte>

我想将C风格的字符串转换为字节vector。一个可行的解决方案是手动转换每个字符并将其推送到vector上。但是,我对这个解决方案并不满意,想找到更优雅的方式。我的尝试之一如下:std::vectormyVector;&myVector[0]=(byte)"MyString";哪个错误让我得到一个errorC2106:'=':leftoperandmustbel-value正确的做法是什么? 最佳答案 最基本的事情是这样的:constchar*cstr="bla"std::vectorvec(cstr,cstr+strlen(cst

c++ - 是否可以使用 std::byte 作为枚举类的基础类型?

由于std::byte根据定义不是整数类型,因此以下片段格式错误:enumclassfoo:std::byte{bar=1,baz=2};在C++17中有没有办法做与此等效的事情?编辑:我不是要解决任何特定问题。显然enumclasswhatever:unsignedchar可以做到。但是,我希望std::byte更灵活一点,并且想知道这是否可能。 最佳答案 std::byte是definedbythestandard成为一个枚举类。因此,它有一个基础类型(unsignedchar)。所以你可以创建一个具有相同底层类型的枚举:enu

麒麟/Centos系统安装MySQL缺失libssl.so.10(libssl.so.10)(64bit)

安装Mysql的相关rpm包时,提示有如下依赖找不到,一定要下载相关的openssl安装包进行安装,.so、.so.3、.so.10都是不一样的包,切莫通过--nodeps--force等参数跳过依赖直接安装,治标不治本,后面还是会出问题的,建议都安装上。这时候一定要安装openssl10系列,如 compat-openssl10-1.0.2o-3.el8.aarch64.rpm,不要以为装过类似openssl-1.1.1f-4.p15.ky10.aarch64.rpm的包就万事大吉了。网上有些人提到的将openssl*改名、软链接成.so.10都是不可取的,旁门左道而己,不要被误导。这里推荐

c++ - OpenCV: "libopencv_core.so.2.3: cannot open shared object file: No such file or directory"

我刚刚在我的Debian机器上安装了OpenCV,但遇到了一些问题。我遵循了Wiki上的安装指南。尝试编译示例给出了似乎是成功的编译,但是尝试运行它们最终会抛出错误:fagg@hubble:~/src/OpenCV-2.3.1/samples/cpp$g++-Wallem.cpp-lopencv_core-lopencv_imgproc-lopencv_calib3d-lopencv_video-lopencv_features2d-lopencv_ml-lopencv_highgui-lopencv_objdetect-lopencv_contrib-lopencv_legacyfa