草庐IT

libc_start_main

全部标签

c++ - Linux C++ : Does a return from main() cause a multithreaded app to terminate?

这个问题似乎是重复的,但我找不到。如果我错过了之前的问题,我们深表歉意。在我最有经验的Java中,如果您的main()fork一个线程并立即返回,该进程将继续运行,直到该进程中的所有(非守护进程)线程都已停止。在C++中,情况似乎并非如此——只要主线程返回,进程就会终止,而其他线程仍在运行。对于我当前的应用程序,可以通过应用pthread_join()轻松解决这个问题,但我想知道是什么原因导致了这种行为。这个编译器(gcc)是特定的、pthreads特定的,还是在大多数/所有已实现C++的平台之间共享的行为?这种行为是否可以在pthreads中配置(我已经在pthread_attr_*

java - 线程 "main"java.lang.NoClassDefFoundError : org/apache/hadoop/util/PlatformName 中的异常

我知道有很多关于此异常的帖子,但我无法解决此问题。我认为必须编辑类路径才能解决它。我正在尝试在hadoop基础设施中运行一个名为DistMap的程序。这是我遇到的错误。Causedby:java.lang.ClassNotFoundException:org.apache.hadoop.util.PlatformNameatjava.net.URLClassLoader$1.run(URLClassLoader.java:202)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.net.URLClassL

java - 线程 "main"java.lang.NoClassDefFoundError : org/apache/hadoop/util/PlatformName 中的异常

我知道有很多关于此异常的帖子,但我无法解决此问题。我认为必须编辑类路径才能解决它。我正在尝试在hadoop基础设施中运行一个名为DistMap的程序。这是我遇到的错误。Causedby:java.lang.ClassNotFoundException:org.apache.hadoop.util.PlatformNameatjava.net.URLClassLoader$1.run(URLClassLoader.java:202)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.net.URLClassL

linux - gcc: 找不到/usr/local/lib 中的链接库,但是/etc/ld/so.conf.d/libc.conf 列出了它?

我遇到了共享库和gcc的问题。起初我无法运行我编译的程序,因为我收到以下错误:加载共享库时出现gcc错误。查了一下,发现是共享库找不到​​。但是我已经确定共享库位于/usr/local/lib中,AFAICT是共享库的常用目录,应该从一开始就可以使用。我读到您可以设置LD_LIBRARY_PATH,这对我有用。但是,我不希望每次运行我的程序时都设置它。进一步搜索建议编辑ld.so.conf。当我查看它时,它具有以下内容:include/etc/ld.so.conf.d/*.conf查看ld.so.conf.d目录显示了一系列文件,包括libc.conf。该文件中包含以下内容:/usr/

linux - gcc: 找不到/usr/local/lib 中的链接库,但是/etc/ld/so.conf.d/libc.conf 列出了它?

我遇到了共享库和gcc的问题。起初我无法运行我编译的程序,因为我收到以下错误:加载共享库时出现gcc错误。查了一下,发现是共享库找不到​​。但是我已经确定共享库位于/usr/local/lib中,AFAICT是共享库的常用目录,应该从一开始就可以使用。我读到您可以设置LD_LIBRARY_PATH,这对我有用。但是,我不希望每次运行我的程序时都设置它。进一步搜索建议编辑ld.so.conf。当我查看它时,它具有以下内容:include/etc/ld.so.conf.d/*.conf查看ld.so.conf.d目录显示了一系列文件,包括libc.conf。该文件中包含以下内容:/usr/

c - 为什么没有 return 语句的 main 函数返回值 12?

我编写了一个打印表格的程序。我没有在main函数中包含return语法,但是每当我输入echo$?它显示12。我的源代码:#includeintmain(void){intans,i,n;printf("entertheno.:");scanf("%d",&n);for(i=1;i我没有写return12,但是每次执行程序还是返回12。谢谢。 最佳答案 正如swegi所说,它是未定义的行为。正如SteveJessop等人所说,它在C89之前是一个未指定的值,并在C99中指定(观察到的行为不符合C99)在大多数环境中实际发生的是最后一

c - 为什么没有 return 语句的 main 函数返回值 12?

我编写了一个打印表格的程序。我没有在main函数中包含return语法,但是每当我输入echo$?它显示12。我的源代码:#includeintmain(void){intans,i,n;printf("entertheno.:");scanf("%d",&n);for(i=1;i我没有写return12,但是每次执行程序还是返回12。谢谢。 最佳答案 正如swegi所说,它是未定义的行为。正如SteveJessop等人所说,它在C89之前是一个未指定的值,并在C99中指定(观察到的行为不符合C99)在大多数环境中实际发生的是最后一

c - __libc_start_main 中发生了什么?

我真的很想了解高级代码->可执行文件的步骤..但我遇到了一些困难。我写了一个空的intmain(){}C文件,并试图通过objdump-d破译反汇编。这是正在发生的事情:在_start中,设置对齐方式,将参数压入堆栈,调用__libc_start_main在__libc_start_main中,执行的第一行是jmp*0x8049658但是,在使用objdump-R来检查重定位记录时,0x8049658中的值是__libc_start_main本身!我在这里遗漏了一些东西..编辑:这是一些来源;080482c0:80482c0:ff2558960408jmp*0x804965880482

c - __libc_start_main 中发生了什么?

我真的很想了解高级代码->可执行文件的步骤..但我遇到了一些困难。我写了一个空的intmain(){}C文件,并试图通过objdump-d破译反汇编。这是正在发生的事情:在_start中,设置对齐方式,将参数压入堆栈,调用__libc_start_main在__libc_start_main中,执行的第一行是jmp*0x8049658但是,在使用objdump-R来检查重定位记录时,0x8049658中的值是__libc_start_main本身!我在这里遗漏了一些东西..编辑:这是一些来源;080482c0:80482c0:ff2558960408jmp*0x804965880482

.net - "Cannot start Omnisharp because Mono version >=3.10.0 is required"

我刚刚安装了VisualStudioCode,当我启动它时,它给了我这个错误。当我尝试执行我的示例应用程序时,它给我TypeLoadExceptions。CannotstartOmnisharpbecauseMonoversion>=3.10.0isrequired 最佳答案 当你安装它的时候,你可能用过sudoapt-getinstallmono-complete在我的例子中,这安装了明显低于3.10.0的Mono3.2.8。在找到此解决方法之前,我无法设法将我的Mono安装升级到更新的版本:sudoapt-getinstallm