Калі стандартная бібліятэка C з'яўляецца статычнай бібліятэкай або дынамічная бібліятэка?

Ці з'яўляецца З стандартнай функцыяй бібліятэкі (ex.prinf, зсап) разглядаецца як статычная функцыя бібліятэкі або бібліятэкі дынамічнай функцыя?

4
Гэта цалкам залежыць ад рэалізацыі, можа быць што заўгодна, і нават абодва могуць быць магчыма пры той жа рэалізацыі ў залежнасці ад ключа кампілятара. Пастолькі, немагчыма адказаць, на самай справе. Мае спасылкі рэалізацыі дынамічна з MSVCRT па змаўчанні, але тое, што не значыць, што ... нічога.
дададзена аўтар Damon, крыніца
Што гэта значыць, функцыя можа быць статычнай ці дынамічнай?
дададзена аўтар David Heffernan, крыніца
@MitchWheat Калі гэта так, то пытанне зводзіцца да «Вы можаце сказаць мне, як я звязваў сваю праграму?» ;-)
дададзена аўтар David Heffernan, крыніца
Я мяркую, што яны азначаюць «сувязь»
дададзена аўтар Mitch Wheat, крыніца
@David: сапраўды .... :)
дададзена аўтар Mitch Wheat, крыніца

2 адказы

гэта залежыць ад таго, як звязаць сваю праграму. вы можаце ісці ў абодвух напрамках. У VS, вы можаце паказаць альбо /MT (статычны) або /MD (дынамічны). На НКУ, можна паказаць -static-libgcc сцяг, каб звязаць праграму супраць статычнай бібліятэкі.

Звярніцеся да http://gcc.gnu.org/onlinedocs/gcc/Link-Options .html для атрымання дадатковай інфармацыі аб GCC сцягоў і http://msdn.microsoft.com/en-us/library/abx4dbyh (v = vs.80) .aspx для VS.

5
дададзена
<Код> -static-libgcc толькі пра libgcc , які не з'яўляецца стандартнай бібліятэкі С. Вы можаце звязаць libc.a замест звычайнага libc.so хоць.
дададзена аўтар wRAR, крыніца
дзякуй за ваш адказ
дададзена аўтар user966379, крыніца
/ MT і/MD варыянту кампіляцыі, а не опцыі кампаноўніка.
дададзена аўтар Hans Passant, крыніца

Вы не павінны сапраўды клапаціцца.

І кампілятар можа справіцца нават некаторая стандартная функцыя спецыяльна, калі ён робіць гэта ў адпаведнасці з тым, што стандарт вызначае.

Часам GCC робіць такія рэчы, як, што, напрыклад, ён можа аптымізаваць выклік MemSet да пятлі ...

Калі ваша пытанне, як вы звязалі сваю праграму Foo , на GNU/Linux каманду LDD Foo адказвае, што.

Прывітання.

1
дададзена