在一些遗留代码中看到以下内容:
class A {
&A() { ... }
}
Run Code Online (Sandbox Code Playgroud)
什么"&"用于?它在VC++ 2008中编译,看起来像默认构造函数,bug gcc无法编译它.
我正在使用第三方.我正在使用它的共享库版本,因为库很大(~60MB)并且被多个应用程序使用.
有没有办法在应用程序启动时发现库的发布/调试版本分别用于我的应用程序的发布/调试版本?
更长的描述
暴露C++接口的库.其中一种API方法返回std::vector<std::string>
.
我在调试模式下编译应用程序时的问题,应该使用库的调试版本.同样的发布.如果使用了不正确的库版本,应用程序将崩溃.
根据gcc(参见http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt03ch17s04.html)
但是对于可以使用调试模式或发布模式basic_string对象的混合模式标准库,事情会变得更复杂
PS 1
看起来Timbo的提议是一种可能的解决方案 - 使用不同的soname来调试和发布库.那么,应该将什么传递给./configure脚本来更改库的名字?
PS 2
我的问题不是在链接时,而是在运行时.
PS 3
这是一个问题,展示了我面临的问题.
我想使用OpenSSL来处理所有SSL通信(客户端和服务器端).我们想使用硬件加速卡来卸载重加密计算.
我们注意到在OpenSSL"速度"测试中,可以直接调用加密函数(例如RSA_sign/decrypt
,等等).为了充分利用硬件容量,需要多个线程(最多128个线程),这些线程会根据请求加载卡,并确保硬件卡永远不会空闲.
我们希望使用高级OpenSSL API来处理SSL连接(例如SSL_connect/read/write/accept
),但是这个API没有公开实际加密操作的位置.例如,在调用时SSL_connect
,我们不知道RSA操作完成的点,并且我们事先不知道哪些调用将导致严重的加密计算并且仅将那些调用引用到加速器.
问题:
UPDATE
从加速OpenSSL*使用英特尔®QuickAssist技术,您可以看到,英特尔还提到了多线程/进程的使用:
OpenSSL的标准版本本质上是串行的,这意味着它在一个上下文中处理一个连接.从加密操作的角度来看,该发布基于同步/阻塞编程模型.一个主要的限制是吞吐量只能通过添加更多线程(即进程)来扩展,以利用核心并行化,但这也会增加上下文管理开销.
英特尔的OpenSSL分支终于在这里找到了.更多信息可以在这里包含的pdf中找到.
看起来英特尔改变了OpenSSL ENGINE的工作方式 - 它将工作发布到驱动程序并立即返回,同时应该轮询相应的结果.
如果使用其他SSL加速器,则也应修改相应的OpenSSL ENGINE.
performance ssl multithreading openssl hardware-acceleration
在搜索宏引用时,Eclipse显示文件+行,宏引用它.我想文件+行+ 功能.
搜索其他类型的数据(例如函数)将按预期显示文件+行+ 函数,所以也许应该在Eclipse配置中为宏调整某些东西?
有任何想法吗?
我们试图在Linux上选择用于C++开发的IDE.建议的选项是KDevelop和Eclipse.
Eclipse是高度可定制的,但是以Java为中心且很重.KDevelop受限于特定的KDE(我相信因为KDE API)并且如果需要则无法替换.
你用什么,为什么?
谢谢迪马
我们目前有2个分支机构:
/repo/branch/current_version
/repo/branch/next_version
Run Code Online (Sandbox Code Playgroud)
current_version是所有开发人员当前工作的分支.
我们开始下一个版本并从current_version中的某个点创建了next_version分支,而对current_version的工作仍在继续.在next_version中,我们进行了一些开发,在接下来的几个月中,分支将成为我们的主要分支,所有开发都将完成.
由于current_branch已经开发,我们周期性地(比如说每2周一次)认为改变next_version.这是为了保持两个分支同步,所以当所有开发人员最终都会删除current_branch并转移到next_release时,next_release将包含所有current_branch的功能集成和测试.
问题是变基.实际上,rebasing正在将current_branch的最新提交合并到next_version.因此,如果我将检查next_release中提交文件的历史记录,我将看到的只是合并提交而不是current_version的历史记录(提交/作者/注释).
我错过了什么吗?
我有一些链接问题.
为了研究这个问题,我添加了-t linker flag(gcc -Wl,-t)来打印使用哪些库以及使用静态库中的哪些对象.
有一个静态库,在某些配置中使用一组目标文件,而在另一组配置中使用.
是否有任何方法(可能是ld标志)看到为什么特定对象(在目标文件中定义了什么以前未定义的符号)被链接到二进制和其他来自相同的静态库不是?
我有一个驱动程序,它可以处理多个TCP连接.
有没有办法在内核中给出一个类似于用户空间应用api的select/poll()/ epoll()struct sock
的内容?
谢谢
c++ ×5
linux ×5
gcc ×3
c ×2
ide ×2
compilation ×1
eclipse ×1
eclipse-cdt ×1
glibc ×1
history ×1
ld ×1
linker ×1
linux-kernel ×1
openssl ×1
performance ×1
rebase ×1
ssl ×1
svn ×1
time ×1
unix ×1
visual-c++ ×1