我在configure.ac中有以下内容:
AC_CHECK_PROGS(MAKE,$MAKE make gmake,error)
if test "x$MAKE" = "xerror" ;then
AC_MSG_ERROR([cannot find a make command])
fi
Run Code Online (Sandbox Code Playgroud)
这已经在我们的项目中很长一段时间了,但在一些设置中,我得到这个错误:
configure.ac:45: error: possibly undefined macro: AC_MSG_ERROR
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
Run Code Online (Sandbox Code Playgroud)
最近在上面添加的行:
AC_CONFIG_MACRO_DIR([m4])
LT_INIT
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释导致此错误的原因以及如何追踪问题?
编辑:添加有关差异的详细信息.
有效的盒子:
uname -a Linux host1 2.6.38-13-generic #53-Ubuntu SMP Mon Nov 28 19:33:45 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
automake: 1.11.1
autoconf: 2.67
m4: 1.4.14
libtoolize: 2.2.6b
Run Code Online (Sandbox Code Playgroud)
不起作用的盒子:
Linux host2 2.6.32-35-generic-pae #78-Ubuntu SMP Tue Oct 11 17:01:12 UTC …Run Code Online (Sandbox Code Playgroud) 在下面的awk命令中
awk '{sum+=$1; ++n} END {avg=sum/n; print "Avg monitoring time = "avg}' file.txt
Run Code Online (Sandbox Code Playgroud)
我应该更改什么来删除科学记数法输出(非常小的值显示为1.5e-05)?
我无法使用OMFT变量成功.
我有一个由主服务器和分布式从服务器组成的程序.从属服务器向服务器发送状态更新,如果服务器在固定时间内没有从特定从属设备收到消息,则它将从属设备标记为关闭.这种情况一直在发生.
通过检查日志,我发现从服务器只能向服务器发送一个状态更新,然后永远不能发送另一个更新,总是无法调用connect()"无法分配请求的地址(99).
奇怪的是,从服务器能够向服务器发送多个其他更新,并且所有连接都发生在同一端口上.似乎这种失败的最常见原因是连接处于打开状态,但我无法找到任何未解决的问题.还有其他可能的解释吗?
为了澄清,这是我如何连接:
struct sockaddr *sa; // parameter
size_t sa_size; //parameter
int i = 1;
int stream;
stream = socket(AF_INET,SOCK_STREAM,0);
setsockopt(stream,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));
bindresvport(stream,NULL);
connect(stream,sa,sa_size);
Run Code Online (Sandbox Code Playgroud)
此代码用于获取与另一个服务器的连接,并且这4个调用中的任何一个失败都会导致该函数失败.
我已经在这个工作了几天 -
作为背景,我正在研究一个单线程C程序并使其成为多线程.我最近发现了一个新的死锁情况,但是当我看到gdb中的互斥锁时,我看到了
__lock = 2但是__owner = 0
这不是递归互斥锁.有没有人见过这个?我正在处理的程序是一个守护程序,这种情况只发生在以高吞吐率执行超过20分钟(大约)然后放松负载之后.如果您有任何想法,我将不胜感激.
编辑 - 我忽略了提及我的所有其他线程此时都处于空闲状态.
干杯
我是一个开源项目的开发人员,我一直在服务器上遇到一些问题,认为它已经完全回答了一个套接字(这意味着它已经发送了回复或者为了响应失败而关闭了它)并且客户端被困在轮询().经过一些研究,我发现close()并不总是生成POLLHUP事件,但是shutdown(sock,2)确实生成了POLLHUP事件.
鉴于此,我正在考虑在发生错误处理时添加关闭(sock,2)(除了close()调用).有谁知道这会导致问题的原因?我吠叫错了树吗?我想如果服务器认为套接字已关闭,客户端绝对不应该尝试使用该套接字,我想不出有什么理由不添加它,但我没有使用tcp这么久的关系,并会喜欢一些建议.
我试图找出定义具有恒定大小的全局数组的最佳方法,并且我得出以下选项,所有这些都有自己的缺陷.
// 1:
#define ASIZE 10
int array[ASIZE];
// 2:
enum {ASIZE = 10};
int array[ASIZE];
// 3:
#define ASIZE_DEF 10
static const int ASIZE = ASIZE_DEF;
int array[ASIZE_DEF];
Run Code Online (Sandbox Code Playgroud)
前两个问题是我无法ASIZE从GDB 获得价值.我想第三种选择是最好的,因为我仍然可以转储它的值const,但它也会在另一个宏中泄漏.我可以undef在定义数组后使用宏,const但如果#define和const它们在数组声明的单独文件中,那么它会有点毛茸茸.
有没有更好的办法?