动态编译和静态编译的运行结果不同。

#include <pwd.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(){
	struct passwd* pw;
	pw = getpwuid(getuid());
	if(pw == NULL)
		printf("pw is NULL pointer.\n");
	else
		printf("pw is not NULL pointer.\n");
	return 0;
}

以上程序,分别使用动态链接和静态链接,运行时打印的语句不一样,何解?

静态编译的结果是NULL吧?有些系统调用不适合静态编译

能不能举个浅显易懂的例子说明一下“不适合”。或许正如您所说,但我看了还是一头雾水。:dizzy:

建议多调试分析下getpwuid()和getuid()这两个函数看看,用getpwuid_r()看看错误代码是什么。