亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 44995 | 回復(fù): 2
打印 上一主題 下一主題

[Linux] 編譯源碼執(zhí)行沒問題,源碼編譯成動態(tài)庫加載執(zhí)行內(nèi)存出錯 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2019-05-15 11:29 |只看該作者 |倒序?yàn)g覽
本帖最后由 沉水之魚 于 2019-05-15 11:39 編輯

   RT, 目前對外交付一個項(xiàng)目,因?yàn)橐恍┖诵脑创a不能對外開放,將對應(yīng)的源碼編譯成.so進(jìn)行鏈接,傳進(jìn)去的多級指針出現(xiàn)了如下問題:
1. 用源碼編譯執(zhí)行的時候,傳入這段函數(shù)之前和傳入之后的多級指針打印地址相同,沒有問題, 程序能正確執(zhí)行。
2. 用源碼編譯的.so鏈接后,傳入這段函數(shù)之前和傳入之后的多級指針打印地址不一樣,程序不能正確執(zhí)行。
相關(guān)makefile如下

  1. copybase:= cp $(CURDIR)/libbase/libbase.so $(bin_dir)/libs/

  2. define compile_libbase
  3.         $(CR_CC) -c $(CURDIR)/libbase/lib_base.c -o $(bin_dir)/$(EXE)/lib$@/lib_base.o $(LOCAL_CFLAGS)
  4.         $(CR_CC) -shared -o $(bin_dir)/$(EXE)/libbase.so $(bin_dir)/$(EXE)/lib$@/*.o
  5. endef

  6. $(EXE): clean checkdir base
  7.         $(Q) echo "DONE"

  8. base:
  9.         mkdir -p $(bin_dir)/$(EXE)/lib$@
  10. ifeq ($(CURDIR)/libbase/lib_base.c, $(wildcard $(CURDIR)/libbase/lib_base.c))               
  11.         $(call compile_libbase)
  12. else
  13.         $(copybase)
  14. endif        
  15.         echo "DONE LIBBASE"        
復(fù)制代碼


有沒有大神遇到這種情況?

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2019-11-04 09:28 |只看該作者
如果使用GCC, 在定義全局變量的時候如果不小心,使用動態(tài)鏈接庫的時候確實(shí)會出現(xiàn)奇怪的現(xiàn)象
  1. $ cat main.c
  2. #include <stdio.h>

  3. void foo();
  4. void bar();

  5. int
  6. main(int argc, char *argv[])
  7. {
  8.         foo();
  9.         bar();

  10.         return 0;
  11. }
  12. $ cat foo.c
  13. #include <stdio.h>

  14. int x;
  15. int y = 2;

  16. void
  17. foo(void)
  18. {
  19.          printf("x=%d,y=%d\n", x, y);
  20. }
  21. $ cat bar.c
  22. #include <stdio.h>

  23. int x = 1;
  24. int y;

  25. void
  26. bar(void)
  27. {
  28.          printf("x=%d,y=%d\n", x, y);
  29. }
  30. $ make
  31. cc    -c -o main.o main.c
  32. cc    -c -o foo.o foo.c
  33. cc    -c -o bar.o bar.c
  34. cc -o demo1 main.o foo.o bar.o
  35. cc -o demo2 main.o -L. -lfoo -lbar
  36. cc -o demo3 main.o -L. -lbar -lfoo
  37. $ ./demo1; ./demo2; ./demo3
  38. x=1,y=2
  39. x=1,y=2
  40. x=0,y=2
  41. x=0,y=2
  42. x=1,y=0
  43. x=1,y=0
  44. $
復(fù)制代碼

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2019-11-04 09:29 |只看該作者
回復(fù) 2# mymbsd

希望對樓主有用
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP