我正在学习C语言,并希望在我的Mac (运行OSX Lion 10.7)上使用文本编辑器编写程序。我编写了.c文件,并使用gcc filename.c编译它-它创建了一个名为a.out的可执行文件。但是,当我键入a.out或/a.out时,我得到以下消息:-bash: a.out: command not found或-bash: /a.out: No such file or directory。在使用同样的方法之前,我已经成功地在Linux系统上编译并运行了C程序。我在Mac上做错了什么?
我猜问题在于g++版本7.3.0仍然使用旧的stdc lib,我不确定..
我该怎么检查呢?如何升级到新版本,因为应用程序的运行时错误
看起来像这样:
./a.out
./a.out: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./a.out)
./a.out: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./a.out)
这就是我现在所拥有的:
g++ -v
Using built-i
我的测试源码是:
volatile int gl = 0;
void * InternalHandler( void * param )
{
for ( int i = 0; i < 100000; ++i ) { ++gl; }
return 0;
}
int main()
{
pthread_t ths[100] = { 0 };
for ( int i = 0; i < 100; ++i)
{
pthread_create( &ths[ i ], 0, InternalHandler, 0 );
}
for ( int i =
我正在运行一个定制的2.6.27内核,我刚刚注意到在分段错误期间生成的核心文件比为进程设置的硬核心文件大小限制要大。
更奇怪的是,核心文件有时只被截断(但没有被ulimit设置的限制)。
例如,下面是我将尝试并崩溃的程序:
int main(int argc, char **argv)
{
// Get the hard and soft limit from command line
struct rlimit new = {atoi(argv[1]), atoi(argv[1])};
// Create some memory so as to beef up t
我只是从C开始,我试图编译下面的代码并执行它,但我得到了一个错误。
运行size也没有显示BS或数据堆栈中的任何内容吗?
#include<stdio.h>
/* test.c: My first C program on a Linux */
int main(void)
{
printf("Hello! This is a test prgoram.\n");
return 0;
}
编译作品:
gcc -c test.c -o test
正在执行:
bash: ./test: cannot execute binary file: Exec format
我有一个用arm-linux-gnueabi工具链编译的非常简单的arm可执行文件。我可以用qemu-arm执行它,没有任何问题: $ qemu-arm -L /usr/arm-linux-gnueabi/ ./a.out
Hello world ! 在没有任何参数的情况下运行链接器似乎也是有效的: qemu-arm /usr/arm-linux-gnueabi/lib/ld-linux.so.3
Usage: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]
You have invoked `ld.so', the h
我在执行二进制文件时遇到了麻烦。程序正在接收分段故障。过滤是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