�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
ipv400008542 from 1998/3/4