小编mar*_*o.b的帖子

g++ -static 标志取代了动态库加载器

首先我想提供一些背景信息以避免XY 问题

我正在尝试使用 makefile 和 g++ 编译 C++ 程序。我还必须将任何依赖项静态构建到程序中,但不是“系统库”(libz.solibdl.solibstdc++.solibm.solibpthread.solibc.solibgcc.so

为了实现这一点,我指定-static为链接器标志,然后所有必须静态链接的依赖项,然后我使用该-Wl, -Bdynamic选项,该选项应该告诉链接器链接每个库,在此选项之后,动态链接,包括“系统库”因为它们是最后链接的。(如果我错了,请纠正我。)

LDFLAGS += -Lpath/to/dependencies

# These libs should be linked statically
LDFLAGS += -static
LDFLAGS += -llib1
LDFLAGS += -llib2
LDFLAGS += -llib3

# Libs after this should be linked dynamically.
LDFLAGS += -Wl, -Bdynamic
LDFLAGS += -lz         # If i dont specify these three libraries (z, pthread, dl) 
LDFLAGS …
Run Code Online (Sandbox Code Playgroud)

linux linker makefile g++ ld

4
推荐指数
1
解决办法
2115
查看次数

有没有办法进行编译时检查,在 operator== 内比较类的所有成员

我想知道 C++ 中是否有一种方法可以进行编译时检查,以验证类的所有成员变量是否都通过operator==? 如果有的话,有一种方法可以显式地忽略某些成员的这个约束也是很有用的。

这对于我的用例很有用,其中在我们的开发过程中有一个数据结构随着时间的推移而变化,并且已经多次发生调整现有的operator==被遗忘的情况。这是一个无声的错误,导致我们称之为“误报行为”,这很难找到。

任何信息表示赞赏。也许解决问题的替代方法,或者解释为什么这个编译时检查可能是不可能的。

编辑:可悲的是,我正在使用 C++17,并且在不久的将来无法更新到 C++20。

c++ operator-overloading comparison-operators c++17

2
推荐指数
1
解决办法
67
查看次数