1. insight下載地址 http://sourceware.org/insight/downloads.php
2. 解壓到Ubuntu中,我解壓的目錄如下:
/home/haowei/Downloads/insight-6.8-1
3. 進入insight-6-8-1目錄,執行./configure命令
4. 在執行make命令,編譯的時候會出現異常信息:
- cc1:warning being treated as errors
- linux-nat.c: In function 'linux_nat_info_proc_cmd':
- linux-nat.c:2879:error:ignoring return value of 'fgets',declared with attribute warn_unused_result
查看gdb/linux-nat.c的函數'linux_nat_info_proc_cmd':
這是因為 該函數中調用的fgets方法,沒有定義返回值。
源碼如下:
- if ((procfile = fopen (fname1, "r")) != NULL)
- {
- fgets (buffer, sizeof (buffer), procfile);
- printf_filtered ("cmdline = '%s'\n", buffer);
- fclose (procfile);
- }
修改後的代碼:
- if ((procfile = fopen (fname1, "r")) != NULL)
- {
- char * p=fgets (buffer, sizeof (buffer), procfile);
- printf_filtered ("cmdline = '%s'\n", buffer);
- fclose (procfile);
- }
類似的錯誤還有好幾處,涉及到的方法:write,getcwd,dup...
具體到哪個文件,執行make的時候會有提示的。
修改的時候給這些方法調用定義個返回值即可:
int p = write(....);
char * p=getcwd(....);
int p = dup(...);
注意,這些變量的定義應該放在函數內部的最前面。
另外還有一個gdb/eval.c的類,這個代碼編譯報錯是因為:
int subscript_array[MAX_FORTRAN_DIMS];
這個數組沒有初始化,給這個數組初始化即可編譯通過:
- if (nargs > MAX_FORTRAN_DIMS)
- error (_("Too many subscripts for F77 (%d Max)"), MAX_FORTRAN_DIMS);
-
- memset(&subscript_array,0,sizeof(subscript_array));
5. make執行完成之後,在執行sudo make install 即可完成安裝。
附圖一張,這是我編譯完成之後,insight運行程序的截圖: