實際上,您不能禁用GCC鏈接器警告,因爲它存儲在您鏈接的二進制庫的特定部分。 (該部分稱爲.gnu.warning 符號)
但是,您可以將其靜音,像這樣(這是從的libc-symbols.h提取):
沒有它:
#include <sys/stat.h>
int main()
{
lchmod("/path/to/whatever", 0666);
return 0;
}
給出:
$ gcc a.c
/tmp/cc0TGjC8.o: in function « main »:
a.c:(.text+0xf): WARNING: lchmod is not implemented and will always fail
隨着禁用:
#include <sys/stat.h>
/* We want the .gnu.warning.SYMBOL section to be unallocated. */
#define __make_section_unallocated(section_string) \
__asm__ (".section " section_string "\n\t.previous");
/* When a reference to SYMBOL is encountered, the linker will emit a
warning message MSG. */
#define silent_warning(symbol) \
__make_section_unallocated (".gnu.warning." #symbol)
silent_warning(lchmod)
int main()
{
lchmod("/path/to/whatever", 0666);
return 0;
}
給出:
$ gcc a.c
/tmp/cc195eKj.o: in function « main »:
a.c:(.text+0xf): WARNING:
有了藏身:
#include <sys/stat.h>
#define __hide_section_warning(section_string) \
__asm__ (".section " section_string "\n.string \"\rHello world! \"\n\t.previous");
/* If you want to hide the linker's output */
#define hide_warning(symbol) \
__hide_section_warning (".gnu.warning." #symbol)
hide_warning(lchmod)
int main()
{
lchmod("/path/to/whatever", 0666);
return 0;
}
給出:
$ gcc a.c
/tmp/cc195eKj.o: in function « main »:
Hello world!
顯然,在這種情況下,可以由多個空間或一些廣告爲您的精彩更換Hello world!
項目。
ld的手冊頁不會說有任何選項可以關閉鏈接器警告:( – 2011-06-19 03:41:02