我不熟悉makefile,但习惯于简单的.现在,我手边有一项任务.
我需要编译和链接测试应用程序与不同的库和基于给定目标的不同包含路径.如果target是TARGET1,则在编译期间链接LIB1并包含INCLUDEPATH1.类似地,如果给定的目标是TARGET2,则在CFLAGS中使用INCLUDEPATH2进行编译并与LIB2链接.
%.o: %.c
@echo [CC] $< ...
$(CC) $(CFLAGS) -o $*.o $<
Run Code Online (Sandbox Code Playgroud)
现在我有一个如上所述的规则来编译我的测试应用程序.现在,如何根据目标更改CFLAGS.
我需要找到在Linux上使用C开发的库的代码大小.我已经使用gcc链接器选项针对使用此库的示例应用程序生成了映射文件.
地图文件非常详尽.如何从映射文件中找出库的代码大小?任何关于如何解释地图文件的文档的指针也将非常有用.
当我尝试使用gdb调试'C'程序时,我总是在gdb控制台上连续获得以下内容.
[线程0xb7fe4b70(LWP 30576)退出] [新线程0xb7fe4b70(LWP 30577)] [线程0xb7fe4b70(LWP 30577)退出] [新线程0xb7fe4b70(LWP 30578)] [线程0xb7fe4b70(LWP 30578)已退出]
印刷是否有任何理由?无论如何阻止这个?
注意:该程序使用计时器.这是可能的原因吗?
我在这里看到了一些关于 CRC 32 计算的其他问题。但没有一个让我满意,因此。
openssl 库是否有用于计算 CRC32 的 api 支持?我已经在使用 openssl 进行 SHA1,所以更愿意使用它,而不是链接到另一个用于 CRC32 的库(我的实现是用 C 语言实现的)。
谢谢。
一旦IPv6的部署和使用增加,我对NAT和NAT遍历机制的有用性感到好奇.我们有很多NAT遍历机制(包括专有),主要用于支持某种住宅或企业NAT的IPv4设备/客户端.鉴于NAT是由于IPv4中缺少可用地址而引起的,因为IPv6在未来几年被广泛采用,因为IPv6有足够的地址,它是否会变得多余?
当然,我确实理解IPv6的采用不会在一夜之间发生,而且这是一个渐进而痛苦的过程.在此期间,设备将不得不支持某种双栈(IPv4和IPv6)或某些网络实体将在两者之间进行转换.我相信防火墙将继续存在以保护最终用户,即使在IPv6世界中也能提供一些安全性.
就标准化而言,IETF对NAT问题的态度是什么?鉴于他们已经忽略了所有这一切,从而导致协议破裂.
我希望有人可以对此有所了解.
为了在Linux上开发高度网络密集型服务器应用程序,首选哪种架构?这个想法是这个应用程序通常在具有多个核心(虚拟或物理)的机器上运行.考虑到性能是关键标准,选择多线程应用程序或具有多进程设计的应用程序是否更好?我知道共享资源和同步以从多个进程访问这些资源是很多编程开销,但如前所述,整体性能是关键要求,因此我们可以忽略这些事情.编程语言是C/C++.
我听说即使是多线程应用程序(单个进程)也可以利用多个内核并独立地在不同的内核上运行每个线程(只要没有同步问题).这个调度由内核完成.如果是这样,多线程应用程序和多进程应用程序之间的性能差异不大吗?Nginx使用多进程架构并且速度非常快,但是可以通过多线程应用程序获得相同的性能吗?
谢谢.
我需要以编程方式确定我的程序中的路由器NAT类型.我确实看了一些关于SO的STUN相关答案和UPnP相关信息.但没有得到任何确定的答案.
我查看了STUN RFC(rfc 5389)并没有指定如何确定NAT类型.它确实提到它的先前版本(RFC 3489)确实提供了确定NAT类型的机制.但也提到了这一点
此外.经典STUN的NAT类型分类算法被发现是错误的,因为许多NAT并不完全适合那里定义的类型.
鉴于上述情况,请您就如何在我的软件中确定路由器NAT类型提出建议.此外,现在RFC 3489已经过时了还有其他方法吗?
提前致谢.
chrome是否支持WebRTC的基于承诺的API?我无法让基于getUserMedia()承诺的API在Chrome中运行.
<!DOCTYPE html>
<html>
<head>
<title> Mitel WebRTC client </title>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
<script src='dist/webrtc.min.js'></script>
<script type="text/javascript">
function startUp() {
var options = {
audio: true,
video: true
};
if (getUserMedia) {
getUserMedia(options)
.then(function (stream) {
console.log("Acquired audio and video!");
})
.catch(function (err) {
console.log(err.name + ": " + err.message);
});
} else {
alert("WebRTC not supported on this browser");
}
}
</script>
</head>
<body onload="startUp();">
<h1>WebRTC Promise API Client Application</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在控制台上,我看到以下错误
This appears to be Chrome
adapter-latest.js:32 chrome: …Run Code Online (Sandbox Code Playgroud) 我正在为 MIPS 处理器(小端架构)交叉编译开源库 oRTP。我的开发系统是i386 linux。我运行配置脚本
./configure --host=mips-linux
configure 脚本使用 mips-linux-gnu-gcc 编译器并构建库。但是,当我尝试将库与可执行文件链接时,我得到未定义的符号,说 ortp 库是为 big-endian 构建的,而目标是 little-endian。
file在目标上的现有可执行文件上运行命令显示
ELF 32 位 LSB 可执行文件,MIPS,MIPS32 rel2 版本 1,动态链接(使用共享库),用于 GNU/Linux 2.6.12,具有未知功能 0xf41 = 0x756e6700,具有未知功能 0x70100 = 0x1040000,未剥离
并file在 ortp 目标文件上运行显示
ELF 32 位 MSB 可重定位、MIPS、MIPS32 rel2 版本 1 (SYSV),具有未知能力 0x41000000 = 0xf676e75,具有未知能力 0x10000 = 0x70401,未剥离
尽管两者都是为 MIPS 构建的,但现有的可执行文件是 LSB,而 ortp 编译的目标文件是 MSB。
我如何编译 MIPS 和 LSB 以便链接正常?