![]()
Parent Directory
|
Revision Log
big reorg merge: merge -r 1807:1841 branches/reorg branch->trunk
---
29-Jun-06
Compiled a static version of Qt 4.1.0
will all hopefully-unnecessary dependencies disabled,
using the configure line:
./configure -debug -static -qt-libjpeg -qt-libpng -qt-libmng -qt-zlib -no-exceptions -no-nis -no-cups -no-nas-sound -no-sm -no-xshape -no-xinerama -no-xcursor -no-xrandr -no-xrender -no-fontconfig -no-opengl -no-xkb
The resulting file sizes:
Static, unstripped:
-rwxr-xr-x 1 baford users 75300639 2006-06-29 15:54 netsteria*
-rwxr-xr-x 1 baford users 16471821 2006-06-29 15:54 nst*
-rwxr-xr-x 1 baford users 15458030 2006-06-29 15:54 nstreg*
Dynamic, unstripped:
-rwxr-xr-x 1 baford users 4842537 2006-06-29 15:40 netsteria*
-rwxr-xr-x 1 baford users 2550509 2006-06-29 15:40 nst*
-rwxr-xr-x 1 baford users 1435861 2006-06-29 15:40 nstreg*
Static, stripped:
-rwxr-xr-x 1 baford users 5460920 2006-06-29 15:55 netsteria*
-rwxr-xr-x 1 baford users 1604276 2006-06-29 15:55 nst*
-rwxr-xr-x 1 baford users 1539340 2006-06-29 15:55 nstreg*
Dynamic, stripped:
-rwxr-xr-x 1 baford users 608412 2006-06-29 15:52 netsteria*
-rwxr-xr-x 1 baford users 457148 2006-06-29 15:52 nst*
-rwxr-xr-x 1 baford users 384760 2006-06-29 15:52 nstreg*
The dynamic library dependencies of the resulting netsteria executable:
linux-gate.so.1 => (0xffffe000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x4003f000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40048000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40056000)
libdl.so.2 => /lib/libdl.so.2 (0x40152000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x40156000)
libstdc++.so.6 => /usr/local/lib/libstdc++.so.6 (0x40168000)
libm.so.6 => /lib/tls/libm.so.6 (0x40248000)
libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 (0x4026c000)
libc.so.6 => /lib/tls/libc.so.6 (0x40277000)
/lib/ld-linux.so.2 (0x40000000)
I'll still need to statically link libstdc++ and libgcc_s
to avoid Linux's recent C++ ABI instability.
There's some good information here about doing so:
http://www.trilithium.com/johan/2005/06/static-libstdc/
---
14-Jul-06
Trying to figure out how to get file system change notifications
in each of the major OS's of interest...
Windows:
FindFirstChangeNotification(), etc.
Supports monitoring by single directory or entire tree.
Notification flags:
FILE_NOTIFY_CHANGE_FILE_NAME
FILE_NOTIFY_CHANGE_DIR_NAME
FILE_NOTIFY_CHANGE_SIZE
FILE_NOTIFY_CHANGE_LAST_WRITE
Linux: use inotify (or older dnotify, but probably too much trouble)
Note: inotify was introduced in Linux kernel 2.6.13.
See Documentation/filesystems/inotify.txt in the kernel tree for info.
Unfortunately, inotify doesn't support recursive watches:
you have to register interest in each specific directory in the tree.
At least it doesn't require the directories to be held open
and thus keep automounted file systems locked.
Mac OS X:
Notification mechanism apparently introduced in 10.4 (Tiger).
A direct kernel-level interface is apparently available,
but only to superuser processes:
see http://www.kernelthread.com/software/fslogger/
It's possible that the Spotlight API might provide
the necessary functionality for user-level programs,
via queries with live-updates enabled.
However, it's still not clear to me how exactly
to get signaled when changes actually happen,
or whether we'll see all changes or only file create/deletes.
FreeBSD:
FreeBSD and Mac OS X apparently support the kqueue mechanism:
http://people.freebsd.org/~jlemon/papers/kqueue.pdf
Unfortunately, this mechanism appears to support file change
notification for files that the process is holding hopen -
thus, to monitor an entire directory tree,
the application would have to hold open every file in the tree.
Definitely not practical for what we're trying to do.
Other:
The SGI File Alteration Monitoring (FAM) system
appears to have been ported to a number of systems.
Unfortunately, it also operates on the basis of
a single file or directory and not on whole directory trees,
and requires holding open any files/directories being monitored.
Basically, it appears that none of the major OSes except Windows
provide the basic functionality needed here,
and even on Windows it apparently doesn't work across network file systems.
So I'll probably just have to implement my own ad hoc monitoring mechanism
based on semi-intelligent periodic polling,
and maybe under Windows use the system's notification mechanism
to minimize notification delay.
| Maintained by PDOS | ViewVC Help |
| Powered by ViewVC 1.0.3 |