小编Leo*_*zen的帖子

/ usr/local/lib是否搜索了共享库?

/usr/local/lib搜索的共享库?我有这个错误:

[Leo@chessman ~]$ whereis ffmpeg
ffmpeg: /usr/local/bin/ffmpeg
[Leo@chessman ~]$ ffmpeg
ffmpeg: error while loading shared libraries: libavcore.so.0: cannot open shared object file: No such file or directory
[Leo@chessman ~]$ ls /usr/local/lib/libav*
/usr/local/lib/libavcodec.a            /usr/local/lib/libavfilter.a
/usr/local/lib/libavcodec.so           /usr/local/lib/libavfilter.so
/usr/local/lib/libavcodec.so.52        /usr/local/lib/libavfilter.so.1
/usr/local/lib/libavcodec.so.52.108.0  /usr/local/lib/libavfilter.so.1.74.0
/usr/local/lib/libavcore.a             /usr/local/lib/libavformat.a
/usr/local/lib/libavcore.so            /usr/local/lib/libavformat.so
/usr/local/lib/libavcore.so.0          /usr/local/lib/libavformat.so.52
/usr/local/lib/libavcore.so.0.16.1     /usr/local/lib/libavformat.so.52.94.0
/usr/local/lib/libavdevice.a           /usr/local/lib/libavutil.a
/usr/local/lib/libavdevice.so          /usr/local/lib/libavutil.so
/usr/local/lib/libavdevice.so.52       /usr/local/lib/libavutil.so.50
/usr/local/lib/libavdevice.so.52.2.3   /usr/local/lib/libavutil.so.50.36.0
[Leo@chessman ~]$ 
Run Code Online (Sandbox Code Playgroud)

linux linker ffmpeg shared-libraries

55
推荐指数
6
解决办法
9万
查看次数

使用System.setOut()重定向Runtime.getRuntime().exec();

我有一个程序Test.java:

import java.io.*;

public class Test {
    public static void main(String[] args) throws Exception {
        System.setOut(new PrintStream(new FileOutputStream("test.txt")));
        System.out.println("HelloWorld1");
        Runtime.getRuntime().exec("echo HelloWorld2");
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该将HelloWorld1和HelloWorld2打印到文件text.txt.但是,当我查看文件时,我只看到HelloWorld1.

  1. HelloWorld2去了哪里?它消失在空气中吗?

  2. 假设我想将HelloWorld2重定向到test.txt.我不能在命令中添加">> test.txt",因为我将得到一个文件已经打开错误.那我该怎么做?

java redirect runtime exec runtime.exec

23
推荐指数
2
解决办法
4万
查看次数

使文件指针读/写到内存中的位置

我可以使用fopen()将文件指针写入文件.但是我可以创建一个文件指针,这样调用fputc或fprintf之类的函数会写入内存中的指针吗?这方面的一个例子是java中的ByteArrayOutputStream.另外:我可以反向运行它,其中库需要一个文件指针来读取,所以我分配内存,并创建一个新的文件指针,将从该内存位置读取,但当块的大小用完时返回EOF?(如Java中的ByteArrayInputStream).有没有办法在C中这样做?例如:

FILE *p = new_memory_file_pointer();
fprintf(p, "Hello World!\n");
char *data = get_written_stuff(p);
printf("%s", data); //will print Hello World!
Run Code Online (Sandbox Code Playgroud)

&&/||

char s[] = "Hello World!\n";
FILE *p = new_memory_file_pointer_read(s, sizeof(s));
char *buffer = (char *)malloc( 1024*sizeof(char) );
fread((void *)buffer, 1, sizeof(s), p);
printf("%s", buffer); //prints Hello World!
Run Code Online (Sandbox Code Playgroud)

编辑:对于那些多年后阅读这个问题的人,除了接受的答案之外,你应该看一下open_memstream(3),这些行为更像是这些Java类fmemopen.

c c++

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

如何在java中找到进程的进程ID(pid)?

如果我通过Java得到一个进程对象Runtime.getRuntime().exec(...),或者ProcessBuilder.start(),我可以等待它Process.waitFor(),就像是Thread.join(),或者我可以用它来杀死它Process.destroy(),就像被弃用的那样Thread.stop().

但是:我如何找到过程对象的pid?我在官方文档中没有看到这样做的方法.我可以用Java做到这一点吗?如果是这样,怎么样?

java pid process

21
推荐指数
2
解决办法
6万
查看次数

为什么快速反平方根在Java上如此奇怪和缓慢?

我正在尝试在java上实现Fast Inverse Square Root,以加快向量规范化.但是,当我在Java中实现单精度版本时,我得到的速度与1F / (float)Math.sqrt()最初速度大致相同,然后迅速降低到速度的一半.这很有意思,因为虽然Math.sqrt使用(我推测)一个本机方法,但这涉及浮点除法,我听说它实在很慢.我计算数字的代码如下:

public static float fastInverseSquareRoot(float x){
    float xHalf = 0.5F * x;
    int temp = Float.floatToRawIntBits(x);
    temp = 0x5F3759DF - (temp >> 1);
    float newX = Float.intBitsToFloat(temp);
    newX = newX * (1.5F - xHalf * newX * newX);
    return newX;
}
Run Code Online (Sandbox Code Playgroud)

使用一个简短的程序,我写了迭代每1600万次,然后汇总结果,重复,我得到这样的结果:

1F / Math.sqrt() took 65209490 nanoseconds.
Fast Inverse Square Root took 65456128 nanoseconds.
Fast Inverse Square Root was 0.378224 percent slower than 1F / Math.sqrt()

1F / Math.sqrt() took …
Run Code Online (Sandbox Code Playgroud)

java math math.sqrt sqrt

15
推荐指数
1
解决办法
2578
查看次数

Little-Endian签名整数

我知道WAV文件格式使用16位样本的有符号整数.它还以little-endian顺序存储它们,这意味着最低的8位先到,然后是下一个,等等.第一个字节是特殊符号位,还是特殊符号位总是位于最高位(最高值) ?

含义:
哪一个是WAV格式的符号位?

++---+---+---+---+---+---+---+---++---+---+---+---+---+---+---+---++
|| a | b | c | d | e | f | g | h || i | j | k | l | m | n | o | p ||
++---+---+---+---+---+---+---+---++---+---+---+---+---+---+---+---++
--------------------------- here -> ^ ------------- or here? -> ^
Run Code Online (Sandbox Code Playgroud)

我还是p?

signed endianness

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

是否有用于从youtube下载视频的java API?

我知道YouTube Java API不提供从youtube下载视频的功能.但是,有没有办法下载一个youtube视频给定浏览器URL与Java并保存到文件?我正在寻找这些方面的东西:

URL videoURL = getVideoURL();
// videoURL is input from user, as in http://www.youtube.com/watch?v=dfjghdjogdjgh
YoutubeVideo videoDownload = new YoutubeVideo(videoURL);
OutputStream outStream = new BufferedOutputStream(new FileOutputStream(getOutFile()));
//getOutfile gets file provided by user
InputStream inStream = new BufferedInputStream(videoDownload.getInputStream());
byte[] buffer = new byte[4096];
int n;
while ((n = inStream.read(buffer)) != -1){
    outStream.write(buffer, 0, n);
}
outStream.close();
inStream.close();
Run Code Online (Sandbox Code Playgroud)

java youtube video download

8
推荐指数
0
解决办法
2822
查看次数

使用bash/coreutils而不是perl按功能排序

我发现如果你按照文件扩展名而不是按字母顺序对文件列表进行排序,然后再将它们放入tar存档中,你可以大大提高压缩率(特别是对于你可能有很多.c,.o的大型源代码树,和.h文件).

我找不到一种简单的方法来使用shell来对文件进行排序,它在每种情况下都能按照我的预期运行.一个简单的解决方案,例如find | rev | sort | rev工作,但文件以奇数顺序出现,并且它不能很好地排列它们以获得最佳压缩比.其他工具如ls -X不使用find,并且sort -t. -k 2,2 -k 1,1当文件在文件名中有多个句点时会混乱(例如version-1.5.tar).另一个快速n-dirty选项,使用sed替换最后一个句点/(它永远不会出现在文件名中),然后排序,拆分/:

sed 's/\(\.[^.]*\)$/\/\1/' | sort -t/ -k 2,2 -k 1,1  |  sed 's/\/\([^/]*\)$/\1/'
Run Code Online (Sandbox Code Playgroud)

但是,再次使用名称中find包含/s 的输出不起作用,并且*nix中的文件名中允许使用所有其他字符(除0之外).

我发现使用Perl,您可以使用相同的输出cmp(类似于strcmpC)编写自定义比较子例程,然后运行perl sort函数,传递自己的自定义比较,这很容易用perl正则表达式编写.这正是我所做的:我现在有一个调用的perl脚本

@lines = <STDIN>;
print sort myComparisonFunction @lines;
Run Code Online (Sandbox Code Playgroud)

但是,perl不像bash那样可移植,所以我希望能够使用shell脚本.此外,find不会在目录名称上放置尾随/目录,因此脚本认为目录与没有扩展名的文件相同.理想情况下,我想tar首先阅读所有目录,然后是常规文件(并对它们进行排序),然后是符号链接,我可以通过

cat <(find -type d) <(find -type f | perl exsort.pl) <(find -not -type d -and -not …
Run Code Online (Sandbox Code Playgroud)

regex sorting bash shell perl

8
推荐指数
1
解决办法
426
查看次数

用Cygwin编译独立的exe

我想用cygwin制作一个独立的exe.我有两个选择:

  1. 静态链接cygwin1.dll
    如果我可以静态链接cygwin1.dll,那么我可以得到一个独立的exe.

  2. 将cygwin1.dll与myprog.exe合并
    如果我可以将cygwin1.dll与我的程序合并,我可以得到一个独立的exe.

不建议我使用IlMerge.这不起作用,因为我没有使用.NET编译我的程序.

这些选项中是否有可能?如果没有,这种困境有可能发生什么吗?感谢名单!

dll executable cygwin exe

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

llvm 有 binutils 吗?

LLVM 编译器工具链有一个与普通 gcc 兼容的 gcc。使用 llvm-gcc 的优点是可以访问任意目标,这意味着当您尝试编译为随机架构时,正常的 gcc 会说没有这样的目标,比如 mips-apple-darwin。然而,llvm-gcc 实际上会在 mips 处理器上为 Mac OS X 构建一个编译器。

然而,这里有一个问题:要构建到随机目标,您需要已经为该目标构建的 binutils。因此,如果您有一个 llvm 可以编译到但 binutils 不能编译的目标,那么您就不能制作编译器,因为 GNU Binutils 不支持该目标。

所以......问题是:是否有类似 llvm-gcc 的等效 llvm-binutils 与 GNU Binutils 兼容?(意味着构建到任意目标的目标,而不是列表中的目标。)

编辑:

通过任意,我的意思是我在运行 llvm-gcc 时不选择目标,而是在编译 llvm-gcc 时选择目标。含义:如果我尝试为 mips-apple-darwin 编译 GCC,则会得到不支持的目标。但是如果我为 mips-apple-darwin 构建 llvm-gcc,只要我有 mips-apple-darwin-as 和 mips-apple-darwin-ld,它就可以工作。

compiler-construction gcc llvm binutils

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