Linux如何同时32位和64位?或者是glibc处理的东西?
我运行CentOS 5.3,它是一个"64位"版本; 虽然我为64位和32位构建了东西.据我所知,Windows应该有一个32位模拟器.Linux做同样的事情吗?它是在用户空间还是内核空间?
如果libc处理它,它有点像模拟器说,我将链接32位应用程序,但说64位到内核?
为什么我的静态构建需要共享库?
每隔一段时间我就会从链接器中收到这些警告......(目前正在使用openssh-5.2p1)
这些警告类似于:"在静态链接的应用程序中使用'function'需要在运行时使用glibc版本中的共享库..."
当我谷歌时,我只看到修复,而不是原因.
谢谢,陈兹
为什么在C或C++中使用"long long"会是一件坏事?
我前几天正在编译一个运行时库,在它检查的代码中查看long是否为64位,如果不是则使用long long.但随之而来的是,它发出了一个#warning"使用long long".除非是开发人员的残留调试,否则我想不出任何"长期"警告的原因.
谢谢Chenz
我一直在研究加载python(osx上的2.7)文件作为配置文件的一些案例.我想看看如果我循环运行execfile会有什么行为.我预计会出现内存不足错误或大量交换,但当我得到不同的结果时,我感到非常惊讶.
我设置了一个测试场景如下:
'd'python脚本:
#!/usr/bin/python
x = 0
execfile("d1")
Run Code Online (Sandbox Code Playgroud)
'd1'python脚本:
#!/usr/bin/python
x += 1
print "x = %d" % x
execfile("d2")
Run Code Online (Sandbox Code Playgroud)
'd2'python脚本:
#!/usr/bin/python
x += 1
print "x = %d" % x
execfile("d1")
Run Code Online (Sandbox Code Playgroud)
结果:
$ ./d
x = 1
x = 2
x = 3
... removed for brevity ...
x = 997
x = 998
x = 999
Traceback (most recent call last):
File "./d", line 5, in <module>
execfile("d1")
File "d1", line 5, in <module>
execfile("d2")
File "d2", line …
Run Code Online (Sandbox Code Playgroud) 我在autoconf代码中看到了很多关于什么是dnl'ed而不是dnl'ed的东西.什么是dnl'ed?
size_t仅适用于C++标准或C标准吗?
我在"/ usr/include"树中找不到定义size_t的C头.
如果它不在C标准中,那么GCC是否正在做一些神奇的工作?
谢谢,陈兹
穿过OpenSSL中的一行,让我做了双重拍摄......
if (!*pos)
return NULL;
if (!*pos || ((*pos)->flags == FLAGS))
return blah;
Run Code Online (Sandbox Code Playgroud)
是否存在(性能/安全性/可靠性)差异,而不是:
if (!*pos)
return NULL;
if (*pos && ((*pos)->flags == FLAGS))
return blah;
Run Code Online (Sandbox Code Playgroud)
谢谢,陈兹
假设C中的整数是由硬件规范处理还是在软件中处理?
按整数,我指的是原语"int"
根本的想法是,如果C中的整数不依赖于硬件,那么让gcc实现不同的整数处理程序会违反标准.这样你就可以拥有传统的32位int处理程序,然后你也可以使用256位整数的处理程序,甚至可以使用动态大小的整数.
我确实知道long和long long,但我不确定它们是否独立于提供的硬件,我只想指定构建工具链时要使用的"int"处理程序的大小/类型.
我也理解这样做的危险(因为使用32位整数编译器构建256位整数会很糟糕!),但对于那些需要类似gmp库的代码,我认为它会使代码可读性更好.兼容性是相同的,但依赖性将在编译器而不是代码本身.
疯狂的想法,我知道......但回到最初的问题:
假设C中的整数是由硬件规范处理还是在软件中处理?