�R���s���[�^�[�FC����u���F���L���C�u�����ɂ���
�T�v
�@�����C����u���̓ǎ҂̕�����̒�ĂŁA���L���C�u���������グ�܂��B
�@���L���C�u�����́A�ÓI�ȃ��C�u���������s�`���ɍ��̂���邩�����Ń����N�����̂ƈႢ�A���s���ɓ��I�Ƀ����N�������̂Ƃ�����`�ŁA���������̃v���Z�X�Ƌ��L���邩�����Ŏ��s���Ƀ����N����Ďg������̂ł��BUNIX�ł́A�v���Z�X�ԂŃt�@�C�������L����Ƃ����ƁAmmap()���v�������ׂ܂����A�܂��ɂ�����g�p���A���L���C�u�������}�b�v���ē��삷����̂ł��B
�@��ʂ̃��C�u�����́Aar�R�}���h�ɂ��A�[�J�C�u����āA�v����ɃI�u�W�F�N�g�t�@�C�����ł߂Ă���悤�Ȃ��̂ŁA���ʂ͊g���q�Ƃ��āu.a�v���g�p���܂��B���L���C�u������ar�R�}���h�͎g�p�����Acc�R�}���h������s�����ld�R�}���h���쐬���܂��B��ʓI�Ɋg���q�Ƃ��āu.so�v���g�p���܂��B
cc���邢��ld�R�}���h�̃I�v�V�����Ƃ��ẮASolaris�ł́A�u-G�v�ŁALINUX�ȂǂŎg�p����Ă���gcc�ł́u-G�v���݊����̂��ߎg����悤�ł����A�u-shared�v�I�v�V����������ɂ�����܂��B
�@Windows�ł͋��L���C�u�����́uDLL�v�Ƃ��Ă��̊g���q���̖̂��O�ł��L���ł����A�����ł�UNIX�ł̋��L���C�u�����̎������s���Ă݂܂��傤�B
�T���v��
�@�܂��A���L���C�u�������쐬���Ă݂܂��B�T���v���͎��ɃV���v���ɁAprintf()��"Shared
Library"�ƕ\�����邾���̂��̂ɂ��Ă݂܂����B
---- my_func.c ----
#include <stdio.h>int my_func() { printf("Shared Library\n");return(0); }
�@�ł́A���̃\�[�X�����L���C�u���������Ă݂܂��傤�B
cc -G my_func.c -o libmylib.so
�@�����libmylib.so�Ƃ����t�@�C�����ł��܂��B
�@�Â��āA�e�X�g�p�ɂ��̊����Ăяo���v���O����������܂��B
---- main.c ----
#include <stdio.h>void main() { my_func(); }
�@���L���C�u�����������N���āA���s�t�@�C�����쐬���܂��B
cc main.c -o main ./libmylib.so
�@�����main�Ƃ������s�t�@�C�����쐬����A���s����ƁA
Shared Library
�ƕ\�������͂��ł��B���ꂾ���ł��ƁA���L���C�u�����Ƃ̈Ⴂ��������܂���̂ŁAmy_func.c��������ƕύX���Ă݂܂��傤�B
---- my_func.c ----
#include <stdio.h>int my_func() { printf("Shared Library Test\n");return(0); }
�@�\�����镶�����������ƒ������Ă݂܂����B�����ŁA
cc -G my_func.c -o libmylib.so
�ƁA���L���C�u���������č\�z�����Amain�Ƃ������s�t�@�C�������s����ƁA
Shared Library Test
�ƁA�\�����e���ω����܂��B�ÓI�ȃ��C�u�����ł����main���ă����N���Ȃ��ƕω����Ȃ����̂ł��B
�@�܂��Alibmylib.so����������A�ꏊ��ς����肵�āAmain�����s����ƁA
ld.so.1: main: �d��ȃG���[: ./libmylib.so: open �Ɏ��s���܂���: �t�@�C�����f�B���N�g��������܂���B
�Ƃ��������̃G���[���\������A���s���ɋ��L���C�u�����t�@�C�����I�[�v�����悤�Ƃ��Ă���̂�������܂��B
�@ldd�Ƃ����R�}���h���g�p����ƁA���s�t�@�C�����ǂ̋��L���C�u�������g�p���邩��������܂��B
ldd main
�Ǝ��s����ƁA
./libmylib.so => ./libmylib.so libc.so.1 => /usr/lib/libc.so.1 libdl.so.1 => /usr/lib/libdl.so.1
�ƕ\������܂��B���̂ق���nm�R�}���h��Atruss�R�}���h�ł����L���C�u�����̏�����܂��̂ŁASolaris�̃��[�U�̕��͎����Ă݂Ă��������B
�@�Ȃ��A�����./libmylib.so�ƃp�X���w�肵�ă����N���܂������A-lmylib�ƌ��������Ɏw�肵���ꍇ�͊��ϐ�LD_LIBRARY_PATH�ɂ��������ă��C�u������T���܂��B���������āA�ucc main.c -o main -L./ -lmylib�v�Ǝw�肵�č쐬�����ꍇ��LD_LIBRARY_PATH�Ɂu./�v�������ƌ�����Ȃ��Ƃ����G���[���o�܂��̂Œ��ӂ��Ă��������B
�܂Ƃ�
�@���s���ɓ��I�Ƀ����N�����Ƃ����͎̂��ۂɎ��s���Ă݂�Ɗy�������̂ł����A�ǂ��������Ɏg���Ɨǂ��̂��A�ƌ�����Ƃ�����ƍ��銴���ł��B�W�����C�u�������x�ɗǂ��g������Q�͂Ȃ��Ȃ������ō���Ă������͖��������m��܂���B������x�̃v���W�F�N�g�K�͂ŁA���ʂɎg�p���镔���Ŏg���ƁA���̕����ɕύX���������ۂɑS�v���Z�X���ă����N���Ȃ��čςނ̂ŕ֗������ł��B�܂��ASolaris�̃f�o�b�O�c�[���Ń������̃f�o�b�O���s���ۂɁA�v���Z�X�T�C�Y���傫������Ƃł��Ȃ��̂ł����A���̏ꍇ�����L���C�u�����ɕ�������ƃ`�F�b�N�\�ɂȂ�܂��B������ɂ��Ă�UNIX�ł�Windows��InstallShield�̗p�ɋ��L���C�u�����܂Ŋ܂߂ĊȒP�ɃG���h���[�U���C���X�g�[���ł���悤�ȃc�[���͂��܂�Ȃ��Ǝv���܂��̂ŁA�G���h���[�U�ɔz��ۂɂ͋��L���C�u�����̃o�[�W�����Ǘ��Ȃǒ��ӂ��K�v�ł��傤�B
��낵������u���O��������������
�S���t���K��Љ�T�C�g�F�S���t���K��s�r�^�X�V���I
from 1998/3/4