小编Fix*_*xee的帖子

更改给定可执行文件的链接库 (CentOs 6)

我有一个像这样链接的可执行文件:

  $ ldd a.out
        libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x00007f4881f56000)
        libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f4881cfb000)
        libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f4881965000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f488175d000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4881540000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4881239000)
.
.
Run Code Online (Sandbox Code Playgroud)

其中 libcrypto 和 libssl 库是 openssl 1.0.0-fips 库。我想尝试使用 1.0.1 库,因此我将它们构建在我的主目录中。有没有办法在a.out没有很多痛苦的情况下重新链接我的新 openssl 库?我想避免

  • 必须重新链接a.out(因为构建工具非常复杂)
  • 改变任何全局设置(因为其他开发人员在这台机器上工作)

有可能在这里做我希望的事情吗?

libraries linker

33
推荐指数
2
解决办法
7万
查看次数

wget期间获取md5

我正在wget处理大文件(超过 100GB),然后将我的 md5sum 与存储库中发布的总和进行比较。信不信由你,md5sum在这种大小的文件上运行需要相当多的时间,所以我想在下载的同时获得总和。

做到这一点的最佳方法是什么?我没有看到wget在下载期间计算 MD5的选项(令人惊讶)所以我想使用tee将是要走的路?!

wget checksum

11
推荐指数
1
解决办法
1万
查看次数

命名管道、文件描述符和 EOF

两个窗口,同一用户,带有 bash 提示。在 window-1 中输入:

$ mkfifo f; exec <f
Run Code Online (Sandbox Code Playgroud)

所以 bash 现在试图从映射到命名管道的文件描述符 0 中读取f。在窗口 2 中键入:

$ echo ls > f
Run Code Online (Sandbox Code Playgroud)

现在 window-1 打印一个 ls 然后 shell 死了。为什么?

下一个实验:再次打开 window-1 exec <f。在窗口 2 中键入:

$ exec 3>f
$ echo ls >&3
Run Code Online (Sandbox Code Playgroud)

在上面的第一行之后,window-1 唤醒并打印提示。为什么?在上面的第二行之后,window-1 打印ls输出并且 shell 保持活动状态。为什么?事实上,现在在window-2中,echo ls > f并没有关闭window-1外壳。

答案一定与window-2 中引用命名管道的文件描述符 3的存在有关?!

file-descriptors fifo

10
推荐指数
2
解决办法
4617
查看次数

.dtors 看起来可写,但尝试写入段错误

这是 Ubuntu 9.04, 2.6.28-11-server, 32bit x86


$ cat test.c
main() { int *dt = (int *)0x08049f18; *dt = 1; }
$ readelf -S ./test
...
  [18] .dtors            PROGBITS        08049f14 000f14 000008 00  WA  0   0  4
...
$ ./test
Segmentation fault
$
Run Code Online (Sandbox Code Playgroud)

对于初学者:gcc.dtors在 elf 可执行文件中创建了一个析构函数段,在main()退出后调用。这个表长期以来一直是可写的,在我的情况下它看起来应该是(见readelf输出)。但是尝试写入表会导致段错误。

我意识到最近出现了一种面向只读 .dtors、plt 的运动,但我不明白的是readelfsegfault 和 segfault之间的不匹配。

memory gcc segmentation-fault

9
推荐指数
2
解决办法
4013
查看次数

碎片化和 ext4

假设我F在 Linux ext4 文件系统上有一个稀疏文件,并且进程P1正在写入不相交的 50% 子集,F而P2写入F. 我想在文件“增长”时尽量减少碎片。(我将“grows”放在引号中,因为该文件是作为稀疏文件预先分配的,但是随着块被写入,它们会用实际数据填充幻像块。)

我意识到P1并且P2正在并行运行,一个可能会领先另一个,但除此之外,最好让P1写入块 1,3,5,7,... 而P2写入 2,4,6,... ? 还是P1写 1,2,3,4,...n/2 和P2写 n/2+1, ...., n更好?

ext4 sparse-files

7
推荐指数
1
解决办法
2258
查看次数

如何在带有节流功能的 Linux 上找到处理器速度

我/proc/cpuinfo说我的处理器是 800Mhz,当我知道它实际上是 2.8Ghz 时。这是由于空闲节流造成的,空闲时 CPU 时钟会减慢以节省电量。

Linux中有没有办法找到真正的cpu速度?

linux

6
推荐指数
1
解决办法
3万
查看次数

如何在共享 Linux 环境中禁用 /proc 伪文件系统?

是否有可能禁用/proc伪文件系统,以防止w,ps,top,等等,从展示哪些其他用户在做什么?当然,我仍然希望“其他一切”都能正常工作。有没有可行的方法来做到这一点?

linux security process proc

3
推荐指数
2
解决办法
1653
查看次数