在用emscripten编译NSPR时,我遇到了一个问题。
emscripten不知道".s“后缀,并发出如下错误
shared:ERROR: os_Linux_x86.s: Input file has an unknown suffix, don't know what to do with it!
或者,我用"clang“编译了该文件。
/Users/xxxxxx/Documents/workspaces/EMC/emsdk/clang/e1.38.20_64bit/clang -o os_Linux_x86.o -Wall -pthread -g -
以前我可以正常显示数据,这里仍然没有任何过滤器,这是我的代码和结果。
代码:
$app = DB::select(DB::raw("
select
pel.id as id_pelamar,
nm_pelamar as nama_pelamar,
nm_rs as rumah_sakit,
nm_unit as unit,
nm_jabatan as jabatan,
pel.tgl_lahir as tgl_lahir,
his.status as status,
我想在C程序中使用nm在macOS上显示本地(非外部)符号.
我已经阅读了man nm,它基本上为我提供了显示符号信息的下列选项:
nm -m (Mach-O symbols)
nm -g (external symbols)
nm -a (all symbols)
但是,对于下面的main.c程序,我希望nm -a也输出foo,因为它通过使用static关键字定义为本地符号(内部链接):
nm -a main
0000000100000000 T __mh_execute_header
0000000100000f60 T _bar
0000000100000f30 T _main
SD卡上有一个wav文件。首先,我连接到一个文件并读取字节:
File file = null;file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/202.wav");
byte[] byteData = new byte[(int) file.length()];
FileInputStream in = null;
try {
in = new FileInputStream( file );
in
我试图在Ubuntu16.04上运行由调试库提供的perl可执行文件,但出于某种原因,文件“不是可执行的”,尽管它似乎与我的体系结构匹配。
Ubuntu16.04附带的perl可执行文件被删除
$ nm /usr/bin/perl
nm: /usr/bin/perl: no symbols
perl-debug包在/usr/lib/debug下提供了一个没有剥离的perl。
$ nm /usr/lib/debug/usr/bin/perl | head
U abort@@GLIBC_2.2.5
0000000000589020 r AboveLatin1_in
我想要得到一个列表,其中包含一个可执行文件的所有函数的损坏名称,以便进行一些外部分析。 在Linux上,这是一项简单的任务。我只需要像往常一样编译并运行nm来获得一个包含乱码名称的列表。 $ nm test
U _GLOBAL_OFFSET_TABLE_
U printf
U __stack_chk_fail
0000000000000012 T _Z3fooi
0000000000000000 T _Z3foov
0000000000000007 T _Z4footv
000000
我在执行二进制文件时遇到了麻烦。程序正在接收分段故障。过滤是gdb的输出。
gdb a.out
(gdb) run
Starting program: a.out
Program received signal SIGSEGV, Segmentation fault.
0x00000001 in ?? ()
(gdb)
然后我使用了nm工具
nm -u a.out
U Allocatememory
我发现很多符号都没有定义。这个a.out二进制文件实际上是通过链接许多其他.so获得的。我在一个.so上做了
nm libmylib.so
00000000000de6f T Al
我必须使用另一个静态库构建一个共享库。在这个静态库中,有一些函数调用在nm output中没有定义。我想通过获取对象文件来删除这些符号。我不能删除整个对象文件,因为它的某些部分被使用。有没有办法这么做。
nm output
request.o:
U CLR_SECURE_MEM_START_ADDR //want to remove
U clrSMEMAlloc //want to remove
U clrSMEMCopy //want to remove
在我的桌面上运行gnuplot5.2 (Ubuntu 18.04)时遇到了问题。我得到以下错误:
$ gnuplot
G N U P L O T
Version 5.2 patchlevel 2 last modified 2017-11-01
Copyright (C) 1986-1993, 1998, 2004, 2007-2017
Thomas Williams, Colin Kelley and many others
gnuplot home: http://www.gnuplot.info
faq, bugs,
我正在试图找到导入外部符号的共享库。目前,我可以通过使用nm或许多替代方案(如使用radare2 )获得所有导入的符号。我还可以通过使用ldd获得二进制所依赖的库。但是,由于找不到有效的方法来获取二进制文件中的哪个外部符号依赖于哪个共享库,我就陷入了困境。因此,例如,如何找到一个共享库,它可以高效地导出名为foo或printf的函数或任何东西?我举一个例子:
Output of nm -D myfile
w __cxa_finalize
U foo
w __gmon_start__
我试图在C中重新创建命令nm的行为,虽然我成功地获得了符号和部分的名称,但我发现在我的版本中出现了一些额外的名称。
$> ./my_nm -a obj.o
0000000000000000 b .bss
0000000000000000 n .comment
0000000000000000 d .data
0000000000000000 r .eh_frame
0000000000000000 n .note.GNU-stack
0000000000000000 r .note.gnu.property
0000000000000000 d .rela.eh_frame
000000
我已经做了一个简短的脚本来交叉编译tensorflow,在主机端链接proto_text的过程中遇到了链接器错误,但是我检查了一下,我正在链接适当的库,它似乎包含了正确的符号(见下文)。
版本: tensorflow @ tags/v1.4.0-rc1
下面是我要交叉编译的脚本(我无法获得适用于我的情况的默认compile_nsync.sh脚本)
unset CC CXX AS AR
pushd tensorflow/contrib/makefile/downloads/nsync/builds/x86_64.linux.gcc
CC=gcc AR=ar CXX=g++ AS=as make